我仅循环更新20行,但是20行的最佳性能约为2.5秒。 我该怎么做才能使此简单更新更快?
这是我尝试过的:
Dim connectionString As New SQLite.SQLiteConnection("data source=" & Application.StartupPath & "\db.db3; Version=3;")
Dim connection = New SQLite.SQLiteConnection(connectionString)
connection.Open()
Dim com3 As New System.Data.SQLite.SQLiteCommand(connection)
For Each row As DataRow In table.Rows
com3.CommandText = "UPDATE Results SET LastScore=" & row.Item("position") & " WHERE TeamID='" & row.Item("teamid") & "'"
com3.ExecuteNonQuery()
Next
connection.Close()
AND
Dim connectionString As New SQLite.SQLiteConnection("data source=" & Application.StartupPath & "\db.db3; Version=3;")
Using con As New SQLiteConnection(connectionString)
con.Open()
Using c As New SQLiteCommand(con)
c.CommandText = "UPDATE Results SET LastScore= @Pos WHERE TeamID = @ID"
For Each row As DataRow In table.Rows
c.Parameters.AddWithValue("@Pos", row.Item("position"))
c.Parameters.AddWithValue("@ID", row.Item("teamid"))
c.ExecuteNonQuery()
Next
End Using
con.Close()
End Using
答案 0 :(得分:0)
由于muffi的回答,现在已解决。添加BeginTransaction()
Dim connectionString As New SQLite.SQLiteConnection("data source=" & Application.StartupPath & "\db.db3; Version=3;")
Using con As New SQLiteConnection(connectionString)
con.Open()
Using t As SQLiteTransaction = con.BeginTransaction()
Using c As New SQLiteCommand(con)
c.CommandText = "UPDATE Results SET LastScore= @Pos WHERE TeamID = @ID"
For Each row As DataRow In table.Rows
c.Parameters.AddWithValue("@Pos", row.Item("position"))
c.Parameters.AddWithValue("@ID", row.Item("teamid"))
c.ExecuteNonQuery()
Next
End Using
t.Commit()
End Using
con.Close()
End Using