是否可以锁定Access表?

时间:2014-11-12 09:12:17

标签: c# ms-access oledb ado

正如标题所示,我有一个Access 97数据库,想知道是否可以在插入后锁定一个表然后立即解锁它?

我需要添加一条记录并立即获取添加记录的自动编号(通过desc排序)。问题是我插入和检索之间可能有另外一些外部添加(这会得到错误的AutoNumber)。

不幸的是,我无法使用SELECT @@IDENTITY,因为Access 97数据库文件(已经过试用和测试,ref:here)不支持。

2 个答案:

答案 0 :(得分:2)

  

我有一个Access 97数据库,想知道是否可以在插入后锁定表然后立即解锁?

不是真的。但是,虽然您不能将SELECT @@IDENTITY与Access 97数据库文件一起使用,但您仍然可以使用DAO.Recordset添加记录:

// This code requires the following COM reference in your project:
//
//     Microsoft Office 14.0 Access Database Engine Object Library
//
// and the declaration
//
//     using Microsoft.Office.Interop.Access.Dao;
//
// at the top of the class file            

var dbe = new DBEngine();
Database db = dbe.OpenDatabase(@"C:\Users\Public\test\a97_files\a97table1 - Copy.mdb");
Recordset rst = db.OpenRecordset("SELECT * FROM table1", RecordsetTypeEnum.dbOpenDynaset);
rst.AddNew();
// new AutoNumber is created as soon as AddNew() is called
int newID = rst.Fields["ID"].Value;  
rst.Fields["textCol"].Value = "Record added via DAO Recordset.";
rst.Update();
Console.WriteLine("Row added with ID = {0}", newID);
rst.Close();
db.Close();

答案 1 :(得分:0)

感谢所有帮助人员,但我会选择我刚输入的相同细节,这将返回所需的内容。