2014-01-29 6 views
0

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

+1

файлы базы данных Сохранение в "C: \" может вызвать проблемы. Попробуйте скопировать (не перемещать) файл базы данных с «C: \» в место, где у пользователей «нормальный» доступ для чтения/записи, например «C: \ Users \ Public», и посмотреть, сохраняется ли проблема при работе с «Публичная» копия. –

+0

@GordThompson Ваш комментарий неверен. % appdata% также находится в C: \ с полным разрешением на чтение/запись. – Adrian

ответ

1

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

Подробнее о Поделиться 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 Acess File

Смежные вопросы