Readonly连接字符串到访问数据库

时间:2011-05-09 21:52:23

标签: ms-access connection-string oledb

我正在尝试使用System.Data.OleDb.OleDbConnection连接到Access数据库文件。我需要以只读模式连接,因为另一个应用程序同时使用它。我可以在读/写连接到数据库没有问题,但似乎无法找到任何正确的readonly字符串。

我试过了:

Provider = Microsoft.ACE.OLEDB.12.0; Data Source = {0}; Persist Security Info = False; Mode = Read

Provider = Microsoft.ACE.OLEDB.12.0; Data Source = {0}; Persist Security Info = False; Extended Properties =“ReadOnly = true;”

感谢。

修改

(我应该在原始问题中提供更多信息。)

当它位于本地计算机上时,我可以成功连接到访问数据库,但是当我尝试使用连接字符串连接到远程计算机上的访问数据库时

Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Persist Security Info=False;Mode=Read

我会收到以下错误:

System.Data.OleDb.OleDbException (0x80004005): The Microsoft Office Access database engine cannot open or write to the file '{0}'. It is already opened exclusively by another user, or you need permission to view and write its data.

我的应用程序在本地系统帐户下的Windows服务中运行。

2 个答案:

答案 0 :(得分:2)

我认为必须通过数据库管理员可以控制的用户权限来处理,或者使用您可以控制的记录集的不同游标类型来处理。我不认为连接字符串指定访问模式,它只是让你到那里。 ;)

答案 1 :(得分:2)

真正的问题是Excel会在文件关闭之前保持连接处于打开状态。

在Excel 2007+中,MaintainConnection设置默认设置为true。您需要进入vb编辑器并使用代码将其变为false。我还没有看到通过可视化界面实现此目的的方法。 即使您将连接字符串设置为只读,它也会锁定访问数据库(根据我的经验)。

对于可枢转连接:

Sheets("sheet1").PivotTables("pivottable1").PivotCache.MaintainConnection = False

对于QueryTable:

Range("A2").Select
Selection.ListObject.QueryTable.MaintainConnection = False
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False

通过将其设置为false,表将连接,运行命令,然后断开连接,释放锁定。

相关问题