gpt4 book ai didi

sql - vb.net sql上次插入的ID

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

我在Access数据库中使用VB.NET,我插入了值,但是随后我需要获取最后插入的ID(自动编号)并将其插入到相关表中。

我尝试了@@ IDENTITY和MAX(column),但是@@ IDENTITY返回零,并且MAX不太可靠(有时插入数据的速度很慢,因此在插入一个ID之前先获取ID)。

Dim insertSql = datalayer.getDataTable((String.Format("INSERT INTO users (username) VALUES ({0})", username)))

Dim newID = datalayer.getDataTable((String.Format("SELECT @@IDENTITY FROM users")))


Dim con As OleDbConnection = getConnection()
con.Open()
Dim sqlCommand As OleDbCommand = New OleDbCommand(String.Format(insertSql), con)
sqlCommand.ExecuteNonQuery()

这是通过两个函数完成的,因此上面的代码可能看起来令人困惑,但这仅是从两个函数中提取的。这两个语句都已执行,但我仅以一个示例为例。

是否有@@ IDENTITY和MAX的替代方法,因为我似乎看不到@@ IDENTITY怎么了?

感谢您的任何建议:)。

最佳答案

绝对至关重要的是,SELECT @@ IDENTITY是在与插入相同的连接(和事务)上执行的。如果您的getDataTable()方法为每个调用创建一个新的连接,那么这就是为什么它不起作用的原因。

更新

另一种更可取的方法是在一个语句中执行两个语句

sql = "INSERT INTO...;SELECT @@IDENTITY..." 
Dim id = sqlCommand.ExecuteScalar(sql)

再次更新

看来您无法针对MS Access数据库 Running multiple SQL statements in the one operation执行类似的多个功能。

关于sql - vb.net sql上次插入的ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4425153/

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