我有一个Access 2007数据库文件,应该由两个程序同时使用。访问使用中的文件问题
程序1应该插入并更新表;
程序2应该只运行查询来显示数据。
问题是,当程序2打开文件 - 程序1无法插入或更新行。
我该怎么办?
我有一个Access 2007数据库文件,应该由两个程序同时使用。访问使用中的文件问题
程序1应该插入并更新表;
程序2应该只运行查询来显示数据。
问题是,当程序2打开文件 - 程序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方法调用,而另一个实例已访问你的数据库。
呃,这是不是完全与请求相反,即他想要两个同时连接? – 2010-11-15 22:21:27
他不能有两个同时操作,所以他需要等第一个完成之前,而不是错误。 – ace 2010-11-15 23:44:11
这是一个权限问题。用户或进程运行程序2没有写入(或创建),并且最好删除该文件夹的特权。这是必需的,所以可以创建LDB锁定文件,以便Access可以允许多个用户使用同一个数据库文件。
你如何连接到Access数据库?你能提供代码吗? – 2010-11-15 08:21:30
为什么C#标记在这里? – VladV 2010-11-15 08:22:03
你目前的连接字符串会有很大帮助,然后我会编辑它并将其附加到我的答案中。 – JonVD 2010-11-15 08:26:03