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

Astro门 2013-04-21 08:42:27
也就是说为什么一条数据插入了两次?

scd.ExecuteNonQuery() 显示执行的次数,与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();
}
}
...全文
66 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Astro门 2013-04-21
  • 打赏
  • 举报
回复
引用 3 楼 linrachel 的回复:
C# code?1234if (scd.ExecuteNonQuery() > 0) //ExecuteNonQuery() 返回受影响的行数,执行不成功时 =0{ Response.Write("添加成功" + <span style="color: #FF0000;">scd.ExecuteNonQuery()</span>.ToString());}……
啊!对对对!呵呵!是这个问题,谢谢啦!
linrachel 2013-04-21
  • 打赏
  • 举报
回复
代码里不能着色。。 就是这里,你先在判断里执行了一次,然后在Response.Write里又执行一次,你说是不是两条。。。 if (scd.ExecuteNonQuery() > 0) //ExecuteNonQuery() 返回受影响的行数,执行不成功时 =0 { Response.Write("添加成功" + <span style="color: #FF0000;">scd.ExecuteNonQuery()</span>.ToString()); }
linrachel 2013-04-21
  • 打赏
  • 举报
回复

if (scd.ExecuteNonQuery() > 0)      //ExecuteNonQuery() 返回受影响的行数,执行不成功时 =0
{
    Response.Write("添加成功" + scd.ExecuteNonQuery().ToString());
}
  • 打赏
  • 举报
回复
你的方法被调用了两次? 或者你的DataTable里面的数据是双倍的? 监视断点一下看看。
  • 打赏
  • 举报
回复
调试查看数据源dataTable 里面数据是否正常。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧