当我查询MS Access数据库时,我注意到它已被锁定,而其他应用程序无法访问它。这是我的代码:
public void PopulateDataTableSettings()
{
if (_dt.Rows.Count == 0)
{
string query = "select * from settings";
using (OleDbConnection conn = new OleDbConnection(_connectionString))
{
conn.Open();
using (OleDbCommand cmd = conn.CreateCommand())
{
cmd.CommandText = query;
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
da.Fill(_dt);
}
conn.Close();
}
}
}
这是我的连接字符串:
OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder();
builder.DataSource = "C:\\shop.mdb";
builder.Provider = "Microsoft.Jet.OLEDB.4.0";
builder.OleDbServices = -1;
return builder.ConnectionString;
除了将数据库升级到SQL Server之外,我是否可以指定连接字符串属性以永远不会锁定数据库?我可以使用我的数据适配器上的属性吗?
答案 0 :(得分:1)
很难从您的问题中判断出来,但我假设您正在从其他MS Office应用程序访问此问题?如果是这样,在名为“Share Deny None”的连接属性下有一种模式 - 通过使用此模式,我能够避免大多数(但不一定是全部)读/写问题。访问是非常繁琐的,它实际上只有在一个人一次访问它时才有效。
有关Share Deny的更多信息无:http://msdn.microsoft.com/en-us/library/office/aa140022(v=office.10).aspx 另一篇有类似问题的帖子:Connecting MS Access while another application using the same MS Acess File