1

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

4

1 回答 1

1

从您的问题很难判断,但我假设您正在从其他 MS Office 应用程序访问它?如果是这样,则连接属性下有一个名为“Share Deny None”的模式 - 通过使用此模式,我能够避免大多数(但不一定是全部)读/写问题。访问虽然非常繁琐,而且只有在一个人一次访问时才有效。

更多关于 Share Deny None 的信息:http: //msdn.microsoft.com/en-us/library/office/aa140022 (v=office.10).aspx 另一个类似问题的帖子:Connecting MS Access while another application using the same MS访问文件

于 2014-01-29T03:51:39.293 回答