MS Access阻止数据库锁定

时间:2014-01-29 03:42:03

标签: ms-access oledb database-locking

当我查询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之外,我是否可以指定连接字符串属性以永远不会锁定数据库?我可以使用我的数据适配器上的属性吗?

1 个答案:

答案 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