gpt4 book ai didi

vb.net - 插入事务和参数?

转载 作者:行者123 更新时间:2023-12-04 07:04:16 25 4
gpt4 key购买 nike

我正在学习 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()

最佳答案

事务的方式应该是一样的(前提是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”属性。 IE。
If SQLreader.HasRows Then
While SQLreader.Read()
ListBox1.Items.Add(SQLreader(1))
End While
End If

我认为 SQLlite 驱动程序也应该如此。

对不起,如果这段代码不是干净的 VB,我大约 5 年没碰过它了!

关于vb.net - 插入事务和参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2386588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com