日期:2014-05-16  浏览次数:21180 次

Access数据库并发访问的问题,在线等。
我用自己C#程序A读取另一个程序B的临时数据表C(Access数据库),B不定时打开数据库C,并且向里面写数据。
现在我发现我打开数据库读取这个临时表时,有时就会是另一个程序完全死掉,只能结束进程。
  在下用的查询程序代码是:
  Conn = @"Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + FileName + ";";
  myCommand = new OleDbDataAdapter("SELECT * FROM " + sheet_name, Conn);
  myCommand.Fill(myDataSet, "TEMP");
  请问【1】这种情况是否是因为Access是访问独占的?如何解决?如何能将通过我的代码把这个数据库编程非独占的。
  【2】我发现上面的代码myCommand.Fill(myDataSet, "TEMP");时,有时会报错,错误提示:“数据库正被另一个程序打开”,请问在下应该采用什么方式打开,才能避免这种情况。
  希望给出代码,在线等。。。。。。

------解决方案--------------------
看一下和MDB文件同一目录下的ldb文件的内容是些什么。
------解决方案--------------------
ldb 文件用记事本打开。
------解决方案--------------------
MDB对并发的支持不好,用ADO连接,默认是读、写模式,非只读。
------解决方案--------------------
Access对并发的支持非常有限,当MDB正在写入时会被锁定,以防止产生冲突导致数据库出错.坚持使用Access对这类问题很难避免,可考虑使用sql或mysql
------解决方案--------------------
这种情况我们也碰到过,就是在你打开数据库文件的时候,然后再启动程序,就会提示:有另一个程序独占。
如果你确认在启动程序的时候,要看数据库。可以拷贝一下数据库文件。不过,这样,不是系统错误。
------解决方案--------------------
当然,你如果查看数据,可以用一些查询数据库的工具,那就不会产生这样的错误了。