获取访问权限的最后一个自动编号

时间:2014-01-04 03:40:52

标签: c#

我在将记录插入访问数据库后尝试获取最后一个自动编号。我变零了。不确定我做错了什么。我试图谷歌,但找不到任何我可以用来理解的简单例子。

// Database was opened before.
cmd.ExecuteNonQuery(); // Insert is working fine.
cmd = new OleDbCommand("SELECT @@IDENTITY", con);
id = cmd.ExecuteNonQuery(); // id shows zero in debug

3 个答案:

答案 0 :(得分:2)

ExecuteNonQuery用于执行目录类型操作(创建/删除对象等)和update/insert/delete操作(请注意select不在该列表中)。

对于update/insert/delete,它会返回受影响的行数。

如果您想从数据库中选择某些内容,则需要获取结果集以查看其返回的内容(例如,请参阅ExecuteReader)。

另外,ExecuteScalar可以执行命令并返回第一行的第一列,这似乎就是你在这里所做的。

答案 1 :(得分:0)

请参阅this

cn.Execute "INSERT INTO TheTable.....", , cmd+ adExecuteNoRecords
Set rs = cn.Execute("SELECT @@Identity", , cmd)

答案 2 :(得分:0)

  

如果使用DAO

RS.Move 0, RS.LastModified
lngID = RS!AutoNumberFieldName
  

如果使用ADO

cn.Execute "INSERT INTO TheTable.....", , adCmdText + adExecuteNoRecords
Set rs = cn.Execute("SELECT @@Identity", , adCmdText)
Debug.Print rs.Fields(0).Value

cn是有效的ADO连接,@@ Identity将返回此连接上插入的最后一个身份(自动编号)。