我有一个与 Access 数据库交互的 C# 应用程序。
当我对一个表和一个新列执行一个OleDbCommand
对象时,我收到一个错误:ALTER
ADD
OleDbException:数据库引擎无法锁定表,因为它已被其他人或进程使用。
虽然我可以成功地操纵我的数据。但是,当我直接在 MS Access 中执行查询时,它可以正常工作。
注意:我的数据库已关闭,没有人或进程正在使用它。
我该如何解决这个问题?
我有一个与 Access 数据库交互的 C# 应用程序。
当我对一个表和一个新列执行一个OleDbCommand
对象时,我收到一个错误:ALTER
ADD
OleDbException:数据库引擎无法锁定表,因为它已被其他人或进程使用。
虽然我可以成功地操纵我的数据。但是,当我直接在 MS Access 中执行查询时,它可以正常工作。
注意:我的数据库已关闭,没有人或进程正在使用它。
我该如何解决这个问题?
试试这个
使用以下连接字符串
db.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\<Your database name>;Persist Security Info=False;")
以及以下附加属性
db.Properties("Jet OLEDB:Connection Control") = 1
简而言之,您需要以独占模式打开数据库才能进行alter table查询。或者您也可以在 c# 中通过以下方式设置此属性
CN.Mode =adModeShareExclusive
虽然我没有测试过代码,但它应该适合你。