2010-11-15 45 views
0

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

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

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

我该怎么办?

+0

你如何连接到Access数据库?你能提供代码吗? – 2010-11-15 08:21:30

+0

为什么C#标记在这里? – VladV 2010-11-15 08:22:03

+0

你目前的连接字符串会有很大帮助,然后我会编辑它并将其附加到我的答案中。 – JonVD 2010-11-15 08:26:03

回答

-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方法调用,而另一个实例已访问你的数据库。

+0

呃,这是不是完全与请求相反,即他想要两个同时连接? – 2010-11-15 22:21:27

+0

他不能有两个同时操作,所以他需要等第一个完成之前,而不是错误。 – ace 2010-11-15 23:44:11

1

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