C# 是否可以锁定访问表?

C# 是否可以锁定访问表?,c#,ms-access,oledb,ado,C#,Ms Access,Oledb,Ado,正如标题所示,我有一个Access 97 db,我想知道是否可以在插入后锁定一个表,然后立即解锁它 我需要添加一条记录,并立即获得添加记录的自动编号(通过按desc排序)。问题是在我插入和检索之间可能会有另一个外部添加(这将获得错误的自动编号) 很遗憾,我无法使用SELECT@@IDENTITY,因为Access 97数据库文件(已尝试并测试过,参考:)不支持它 我有一个访问97数据库,想知道是否有可能在插入后锁定一个表,然后立即解锁它 不是真的。但是,尽管不能对Access 97数据库文件使用

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

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

很遗憾,我无法使用
SELECT@@IDENTITY
,因为Access 97数据库文件(已尝试并测试过,参考:)不支持它

我有一个访问97数据库,想知道是否有可能在插入后锁定一个表,然后立即解锁它

不是真的。但是,尽管不能对Access 97数据库文件使用
SELECT@@IDENTITY
,但仍可以使用DAO.Recordset添加记录:

//此代码在项目中需要以下COM引用:
//
//Microsoft Office 14.0 Access数据库引擎对象库
//
//和宣言
//
//使用Microsoft.Office.Interop.Access.Dao;
//
//在类文件的顶部
var dbe=new DBEngine();
Database db=dbe.OpenDatabase(@“C:\Users\Public\test\a97_files\a97table1-Copy.mdb”);
Recordset rst=db.OpenRecordset(“从表1中选择*”,RecordsetTypeEnum.dbOpenDynaset);
rst.AddNew();
//调用AddNew()后,将立即创建新的自动编号
int newID=rst.Fields[“ID”].Value;
rst.Fields[“textCol”].Value=“通过DAO记录集添加的记录。”;
rst.Update();
WriteLine(“添加了ID={0}的行”,newID);
rst.Close();
db.Close();

谢谢大家的帮助,但我会选择刚才输入的相同细节,这将返回所需的内容

参考和。这绝对是一个XY问题。你能解释一下你想解决什么问题吗?我需要添加一条记录,一旦添加记录获得添加记录的自动编号(通过按desc排序),问题就在我插入和检索之间,可能会有另一个从外部添加的内容(这将获得错误的自动编号)可能会有所帮助。不确定它是否解决了您指定的问题。这不太可能解决它。但是你至少可以避免orderby查询。感谢@Sriram Sakthive链接,但我不能使用它,因为access 1997不支持它(已经尝试过并测试过了)。请看这篇知识库文章:在实现它之前仔细考虑。您可能会在每次插入后进行表扫描。即使你所有的“细节”字段都被索引了,你也必须点击每个索引。在这两种情况下,您都会增加数据库文件的争用,而且Access的扩展性不是特别好,这一点已被广泛接受。事实上,您根本不应该在ASP.NET中使用Access数据库(参考:)。