我有一个Access 2007数据库文件,应该由两个程序同时使用。
程序1应插入并更新表格;
程序2应该只运行查询来显示数据。
问题是,当程序2打开文件时 - 程序1无法插入或更新行。
我该怎么办?
答案 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方法。