一次sqlite更新需要很长时间

时间:2019-07-16 11:12:12

标签: vb.net sqlite loops

我仅循环更新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 

1 个答案:

答案 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