【发布时间】:2011-05-24 10:24:48
【问题描述】:
我正在使用带有 Access 数据库的 VB.NET,我插入了值,但我需要获取最后插入的 ID(自动编号)并将其插入到相关表中。
我试过@@IDENTITY 和 MAX(column) 但@@IDENTITY 返回零并且 MAX 不是很可靠(有时插入数据很慢,所以在插入之前获取 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 出了什么问题?
感谢您的任何建议:)。
【问题讨论】:
-
查看我的最后一次编辑,关于访问不支持在一个命令中使用多个语句。您能否确认它确实有效,或者您是否采用了其他方法?
标签: sql vb.net ms-access lastinsertid