如何加速sqllite事务(写入数据)?

时间:2015-08-02 16:09:31

标签: vb.net sqlite datagridview transactions

我目前正在自我学习(2周)vb visual studio 2015 express

我正在尝试importaccess databasedatagridview的所选数据。我想在sqllite database内写下这些数据。

我的代码如下所示。它有效,但我不确定交易是否设置正确。此外,我不确定在写入sqllite DB时是否必须使用交易。操作似乎很慢,我认为它可以更快。

我是否正确设置了交易?

我的代码是:

    Dim con As String = "Data Source=C:\clients.db;Version=3;"
    Dim sqConnection As New SQLiteConnection(con)
    Dim sqCommand As New SQLiteCommand()
    sqCommand.Connection = sqConnection
    Dim myTrans As SQLiteTransaction '= sqConnection.BeginTransaction()
    sqConnection.Open()
    ' Start a local transaction
    myTrans = sqConnection.BeginTransaction()
    ' Assign transaction object for a pending local transaction
    sqCommand.Transaction = myTrans

    Try
        sqCommand.CommandText = "INSERT INTO Clients (Registered, Name, Number, Details) VALUES (@Registered, @Name, @Number, @Details)"
        sqCommand.Parameters.AddWithValue("@Registered", row.Cells(1).Value)
        sqCommand.Parameters.AddWithValue("@Name", row.Cells(2).Value)
        sqCommand.Parameters.AddWithValue("@Number", row.Cells(3).Value)
        sqCommand.Parameters.AddWithValue("@Details", row.Cells(4).Value)                
        sqCommand.ExecuteNonQuery()
        myTrans.Commit()
        Application.DoEvents()
    Finally
        sqConnection.Close()

    End Try

我看过各种问题/回复让我更加困惑。我无处可去,似乎在圈子里。

2 个答案:

答案 0 :(得分:0)

您不必使用事务将记录添加到数据库。当你做一些预先在数据库上执行多个操作的事情时,我会使用一个事务。如果由于某种原因在此过程中出现问题,事务可以将更改回滚到数据库

答案 1 :(得分:0)

已解决我将myTrans.Commit()移到End Sub之前,现在插入速度提高了两倍..