MS Access предотвращает блокировку базы данных

Когда я запрашиваю свою базу данных 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, могу ли я указать свойство строки подключения, чтобы никогда не блокировать базу данных? Есть ли свойство на моем адаптере данных, которое я мог бы использовать?


person Joseph Anderson    schedule 29.01.2014    source источник
comment
Сохранение файлов базы данных в C:\ может вызвать проблемы. Попробуйте скопировать (не перемещать) файл базы данных из C:\ в место, где пользователи имеют обычный доступ для чтения/записи, например, C:\Users\Public\, и посмотрите, сохраняется ли проблема при работе с общедоступной копией.   -  person Gord Thompson    schedule 29.01.2014
comment
@GordThompson Ваш комментарий немного неверен. %appdata% также находится в C:\ с полным разрешением на чтение/запись.   -  person Anirudha Gupta    schedule 27.04.2016


Ответы (1)


По вашему вопросу сложно сказать, но я предполагаю, что вы получаете доступ к этому из других приложений MS Office? Если это так, в свойствах соединения есть режим под названием «Общий доступ без запрета» — с помощью этого режима мне удалось избежать большинства (но не обязательно всех) проблем с чтением/записью. Однако доступ очень суетлив, и он действительно работает только тогда, когда один человек обращается к нему одновременно.

Дополнительные сведения об общем доступе, запретить нет: http://msdn.microsoft.com/en-us/library/office/aa140022(v=office.10).aspx Другой пост с похожей проблемой: Подключение MS Access, когда другое приложение использует тот же файл MS Acess

person theMayer    schedule 29.01.2014