2017-04-13 17 views
0

私のコードは、データテーブルからMysqlテーブルにデータを挿入しますが、処理には時間がかかります。とにかく、自分のデータ値の「ワンショット挿入」をするために私のメソッドを変更することができますか?それはトランザクション内にも持っているといいでしょう。ありがとう。データテーブルからMySqlテーブルにデータを挿入

Dim result As Boolean = False 
     Dim MysqlConn As MySqlConnection 
     MysqlConn = New MySqlConnection() 
     MysqlConn.ConnectionString = "Server=localhost;Database=duo;Uid=root;Pwd=pass1;" 
     Using con As New MySqlConnection(MysqlConn.ConnectionString) 

      For Each r As DataRow In _dtSir.Rows 

       Using cmd As New MySqlCommand("INSERT INTO " & _serializer.GetTableName(_reportId) & " (SR, IDcol, System) 
               VALUES (@SR, @IDcol, @System)", con) 

        cmd.CommandType = CommandType.Text 
        cmd.Parameters.AddWithValue("@SR", r("SR#")) 
        cmd.Parameters.AddWithValue("@IDcol", CInt(r("ID"))) 
        cmd.Parameters.AddWithValue("@System", r("System")) 

        If Not con.State = ConnectionState.Open Then 
         con.Open() 
        End If 

        cmd.ExecuteNonQuery() 
        result = True 
       End Using 
      Next 

     End Using 

     Return result 
    End Function 
+0

を使ったことがないので、微調整するためにいくつかのことがあるかもしれません

Public Function test() Dim result As Boolean = False Using con As New MySqlConnection("Server=localhost;Database=duo;Uid=root;Pwd=pass1;") con.Open() For Each row As DataRow In_dtSir.Rows Using cmd = con.CreateCommand() cmd.CommandType = CommandType.Text cmd.CommandText = "INSERT INTO " & _serializer.GetTableName(_reportId) & " (SR, IDcol, System) VALUES ('" & row("SR#") & "', '" & CInt(row("ID")) & "','" & row("System") & "'", con) cmd.Connection = con cmd.ExecuteNonQuery() result = True End Using Next con.Close() SqlConnection.ClearPool(con) End Using Return result End Function 

そのコードは必要ありません。一度にすべての新しい行を更新/挿入するには、DataAdapterを使用します。 – Plutonix

答えて

0

速いかどうかを確認するために、これを試してみてください:、_dtSir`はデータテーブルのように見える `以来、私はMySqlConnectionに

+0

unfortunetly isn; t;/ – Dino

+0

何行ありますか? – Mederic

+0

約50000の場合、すべての行をループするのではなく、他のオプションが必要です。 – Dino

関連する問題