我正在学习VB.Net并且需要使用开源System.Data.SQLite ADO.Net解决方案来使用SQLite数据库
我在HOWTO部分中找到的示例仅在C#中。有人在VB.Net中有一个简单的例子我可以学习如何在插入多个参数时使用事务吗?
FWIW,这是我正在处理的代码:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim SQLconnect As New SQLite.SQLiteConnection()
Dim SQLcommand As SQLite.SQLiteCommand
Dim SQLtransaction As SQLite.SQLiteTransaction
SQLconnect.ConnectionString = "Data Source=test.sqlite;"
SQLconnect.Open()
SQLcommand = SQLconnect.CreateCommand
SQLcommand.CommandText = "CREATE TABLE IF NOT EXISTS files (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, hash TEXT);"
SQLcommand.ExecuteNonQuery()
'================ INSERT starts here
SQLtransaction = SQLconnect.BeginTransaction()
Dim myparam As New SQLite.SQLiteParameter()
SQLcommand.CommandText = "INSERT INTO [files] ([name],[hash]) VALUES(?,?)"
SQLcommand.Parameters.Add(myparam)
'How to set all parameters? myparam.Value
SQLcommand.ExecuteNonQuery()
SQLtransaction.Commit()
'================ INSERT ends here
SQLcommand.CommandText = "SELECT id,name,hash FROM files"
'How to tell if at least one row?
Dim SQLreader As SQLite.SQLiteDataReader = SQLcommand.ExecuteReader()
While SQLreader.Read()
ListBox1.Items.Add(SQLreader(1))
End While
SQLcommand.Dispose()
SQLconnect.Close()
End Sub
谢谢。
编辑:对于那些感兴趣的人,这里有一些工作代码:
SQLtransaction = SQLconnect.BeginTransaction()
SQLcommand.CommandText = "INSERT INTO files (name,hash) VALUES(@name,@hash)"
SQLcommand.Parameters.AddWithValue("@name", "myfile")
SQLcommand.Parameters.AddWithValue("@hash", "123456789")
SQLcommand.ExecuteNonQuery()
SQLtransaction.Commit()
答案 0 :(得分:0)
事务方法应该相同(提供SQLite API支持事务。)对于多个参数,您需要为每个参数声明一个SqlParameter类实例,然后将每个参数添加到查询中。
Dim myparam As New SQLite.SQLiteParameter()
myparam.Value = "Parameter 1's value"
Dim myparam2 As New SQLite.SQLiteParameter()
myparam2.Value = "Parameter 2's value"
SQLcommand.Parameters.Add(myparam)
SQLcommand.Parameters.Add(myparam2)
至于你的问题“如何判断至少有一行”标准的.NET SQLReader是否具有“HasRows”属性。即
If SQLreader.HasRows Then
While SQLreader.Read()
ListBox1.Items.Add(SQLreader(1))
End While
End If
我认为SQLlite驱动程序也应该。
很抱歉,如果这段代码不干净VB,我还没有在5年内触及它!