【发布时间】:2012-03-02 11:18:03
【问题描述】:
在 mdb 访问数据库中插入新行后,我必须检索 Auto_Increment 主键 (id)。 在旧的 Access 97 版本中也有 mdb 文件,我不能使用“SELECT @@Identity;”,因为它不受支持。
此外,在多用户环境中,我不喜欢使用 Max(ID) 的想法。
其实我唯一的解决办法就是使用DAO作为:
Dim db As Database 'Test Database
Dim rs As Recordset 'Test Table
...
rs.AddNew
id = rs!id
但我必须添加对 DAO COM DLL 的引用,而我想要一个完整的托管 .NET 代码。
您有什么建议如何在不使用 DAO 或 Max(ID) 的情况下检索 Auto_Increment 主键(插入新行后)?
这是我添加新行的代码:
Using oConn As New OleDbConnection(m_ConnString)
oConn.Open()
Using cmd As New OleDbCommand(sqlInsert, oConn)
cmd.ExecuteNonQuery()
End Using
End Using
谢谢。
【问题讨论】:
-
如果您在事务中执行插入和选择,您可以使用 Max。我知道这有点废话,但它是 Access97...
-
抱歉,我认为您需要使用 DAO 引用,除非您可以将 MDB 更新为更高的 Access 格式。 Tony 的评论是正确的 - 我不确定我是否真的信任 Access 交易,但你可以试一试。
-
@Tony:交易还可以,但 Max 会产生我希望避免的开销。
-
可能是一种有根据的恐惧。从 Access 97 到 2000 的过渡非常艰难。普遍认为 97 是有史以来最好的版本。从那里开始一切都在走下坡路。
-
他们重写了很多数据库/VB 集成,以适应从访问 VB 到 Office 范围的 VB 的转换,但从那以后它就再也没有那么好用了。不过,他们可能已经解决了 2003 格式的一些过渡问题。在升级实时文件之前,我肯定会升级一次性副本并进行广泛测试,但这可能是值得的。现在97已经老了。老实说,拥有 DAO 是一个问题还是纯粹的东西?
标签: database visual-studio ms-access ado.net dao