首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

用C#向数据库导入Excel。数据库数据比Excel多一倍,为何

2013-05-02 
用C#向数据库导入Excel。数据库数据比Excel多一倍,为什么?也就是说为什么一条数据插入了两次?scd.ExecuteNo

用C#向数据库导入Excel。数据库数据比Excel多一倍,为什么?
也就是说为什么一条数据插入了两次?

scd.ExecuteNonQuery() 显示执行的次数,与Excel的数据项数目一致。但为什么数据库就多了一倍数据?

用C#向数据库导入Excel。数据库数据比Excel多一倍,为何

这是插入部分的代码。。。

/* 向数据库的各个表,插入数据 Insert */
        protected void DBInsertData(DataTable dt, string dbName, string tableName, string[] columnName)
        {
            /* 声明、初始化变量 */
            string allColName = "";    //所有的列名
            for (int i = 0; i < columnName.Length; i++)
            {
                allColName += columnName[i] + ",";
            }
            allColName = allColName.Substring(0, allColName.Length - 1);

            string allParaName = "@";  //所有的参数名
            allParaName += allColName.Replace(",", ",@");
            
            for (int i = 0; i < dt.Rows.Count; i++)  //循环 是因为插入多行数据
            {
                string connstring = @"Data Source=.\SQLExpress;Initial Catalog=" + dbName + ";Integrated Security=True";//数据源;初始化;继承方式:安全模式SSPL
                SqlConnection conn = new SqlConnection(connstring);

                string insertstring = "insert into " + tableName + "(" + allColName + ") values (" + allParaName + ")";

                SqlCommand scd = new SqlCommand(insertstring, conn);
                for (int j = 0; j < columnName.Length; j++)  //循环 向数据库插入数据
                {
                    scd.Parameters.AddWithValue(columnName[j],dt.Rows[i][j].ToString());     //先后无所谓
                    //正确的形式是这样子的: scd.Parameters.AddWithValue("titleID", titleid);
                }
                
                conn.Open();


                if (scd.ExecuteNonQuery() > 0)      //ExecuteNonQuery() 返回受影响的行数,执行不成功时 =0
                {
                    Response.Write("添加成功" + scd.ExecuteNonQuery().ToString());
                }
                conn.Close();
            }
        }

Excel 导入
[解决办法]
你的方法被调用了两次?
或者你的DataTable里面的数据是双倍的?
监视断点一下看看。
[解决办法]
代码里不能着色。。
就是这里,你先在判断里执行了一次,然后在Response.Write里又执行一次,你说是不是两条。。。
if (scd.ExecuteNonQuery() > 0)      //ExecuteNonQuery() 返回受影响的行数,执行不成功时 =0
{
    Response.Write("添加成功" + <span style="color: #FF0000;">scd.ExecuteNonQuery()</span>.ToString());
}

热点排行