访问文件正在使用中的问题

时间:2010-11-15 08:15:26

标签: c# ms-access

我有一个Access 2007数据库文件,应该由两个程序同时使用。

程序1应插入并更新表格;
程序2应该只运行查询来显示数据。

问题是,当程序2打开文件时 - 程序1无法插入或更新行。

我该怎么办?

2 个答案:

答案 0 :(得分:1)

这是权限问题。运行程序2的用户或进程没有写入(或创建),并且优选地删除对文件夹的特权。这是必需的,因此可以创建LDB锁定文件,以便Access可以允许多个用户访问同一个数据库文件。

答案 1 :(得分:-1)

您可以使用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方法。