проблема с доступом к файлу - PullRequest
0 голосов
/ 15 ноября 2010

У меня есть файл базы данных Access 2007, который должен использоваться двумя программами одновременно.

Программа 1 должна вставить и обновить таблицу;
Программа 2 должна выполнять запросы только для отображения данных.

Проблема в том, что когда программа 2 открывает файл - программа 1 не может вставить или обновить строки.

Что я могу сделать?

Ответы [ 2 ]

1 голос
/ 16 ноября 2010

Это проблема с разрешениями. Пользователь или процесс, выполняющий программу 2, не имеет права записи (или создания) и, предпочтительно, удаления привилегий в папку. Это необходимо для того, чтобы можно было создать файл блокировки LDB, чтобы Access мог разрешить нескольким пользователям использовать один файл базы данных.

0 голосов
/ 15 ноября 2010

Вы можете использовать Mutex, чтобы ограничить доступ к вашему файлу mdb только одним экземпляром.

using (Mutex m = new Mutex(false, "Global\\TheNameOfTheMutex")) 
{
        // If you want to wait for 10 seconds for other request to finish            
        m.WaitOne(TimeSpan.FromSeconds(10),false);
        UpdateDatabase();  // or ReadDatabase();


        // or you can throw error if another process is accessing your database
        //
        //if (!m.WaitOne(TimeSpan.Zero, false))
        //    throw new Exception("Another instance is updating database.");
        //else
        //    UpdateDatabase();                              

} 

То, что делает этот фрагмент кода выше, не позволит любому другому экземпляру вашего приложения вызывать UpdateDatabaseметод, в то время как другой экземпляр уже обращается к вашей базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...