2

我对 C# 中的循环数据表有疑问

我有一个 DataTable 有大约 20.000 行和 60 列

我想编写一个 SQL 查询将 DataTable 中的所有数据插入数据库

我正在使用我的 Sql

这是我的 SQL 语法:

"Insert into a values (...), (...), (...), ..." 

“(...)”是一行中的所有数据

这是 C# 代码:

DataTable myDataTable; // myDataTable has 20.000 rows and 60 columns
string mySql = "insert into a values "
for(int iRow = 0; iRow < myDataTable.Rows.Count; iRow++)
{
     mySql += "(";
     for(int iColumn = 0; iColumn < myDataTable.Columns.Count; iColumn++)
     {
          string value = myDataTable.Rows[iRow][iColumn].ToString()
          string parameter = "@" + iRows.ToString() + iColumns.ToString();
          // here is some code for add "parameter" and "value" to MySqlCommand
          mySql += ","
     }

     // remove "," at the end of string mySql
     mySql  = mySql.SubString(0, mySql.Length - 1);

     mySql += "),"
}
// remove "," at the end of string mySql
// after that, I will execute mySql command to insert data into database here

当我运行该代码时,需要很长时间才能完成

我尝试从“string”更改为“StringBuilder”,但它只是快了一点。

如何让代码运行得更快?

感谢大家的支持。

4

1 回答 1

1

我在评论中询问了一些时间信息,但后来我注意到了这行代码:

mySql  = mySql.SubString(0, mySql.Length - 1);

我建议将其从循环中删除,并使用更智能的代码仅在需要时附加逗号。

例如,在内循环中,mySql在每个参数之前而不是之后将逗号添加到变量中,除了 where iColumn == 0。这将阻止每次在字符串末尾出现不必要的逗号。

于 2013-03-04T05:27:38.363 回答