现在我要多线程访问数据库写,其中一个正在写时,数据库应该是锁定状态吧,我怎么能够得知这个状态哪?

解决方案 »

  1.   

    public static bool insertflag;
      

  2.   

    Jet数据库引擎是支持事务Transaction的,你可以使用  OleDbConnection.BeginTransaction()来产生开启事务。没有什么“数据库锁状态”这一说。Jet引擎虽然是比较早就开发出来了(我记得在1994年以前就很棒了,支持事务),但是它比较正规,不像Fox、Clipper之类的简单东西。没有“锁”这个对象需要你编程,锁是Jet内部管理的对象,你只应该针对事务编程。打开Jet数据库的时候,有可能需要区分使用“独占、共享”两种方式。通过Ole好像默认是以共享方式打开它的。但是如果你需要自己写程序来压缩、修复数据库,就需要(在调用MDAC中的Jet引擎dll时)以独占方式打开数据库。
      

  3.   

    你可以在 BeginTransaction 之后,在这个事务中向数据库更新资料,然后执行事务的 Commit 操作或者 Rollback 操作。当你编程的时候,告诉自己“我不关心别人说的数据库锁是什么玩意,我只针对事务编程”,这就已经能实际开发正规的数据库程序。