我目前正在自我学习(2周)vb
visual studio 2015 express
。
我正在尝试import
从access database
到datagridview
的所选数据。我想在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
我看过各种问题/回复让我更加困惑。我无处可去,似乎在圈子里。
答案 0 :(得分:0)
您不必使用事务将记录添加到数据库。当你做一些预先在数据库上执行多个操作的事情时,我会使用一个事务。如果由于某种原因在此过程中出现问题,事务可以将更改回滚到数据库
答案 1 :(得分:0)
已解决我将myTrans.Commit()移到End Sub之前,现在插入速度提高了两倍..