2

C# の loop DataTable について質問があります

DataTable には約 20.000 行と 60 列があります

DataTable のすべてのデータをデータベースに挿入する SQL クエリを作成したい

My Sqlを使用しています

これは私のSQL構文です:

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

"(...)" は 1 行のすべてのデータ

これは 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);

ループからそれを削除し、必要なときにのみコンマを追加するように少しスマートなコードを作成することをお勧めします。

たとえば、内側のループでは、mySqlwhere を除いて、各パラメーターの後ではなく前にコンマを変数に追加しますiColumn == 0。これにより、不要なコンマが毎回文字列の末尾に配置されるのを防ぐことができます。

于 2013-03-04T05:27:38.363 に答える