2个线程操作ACCESS,1个线程执行INSERT后,另外1个线程UPDATE,为什么有时候能更新有时候又找不到对应的记录呢。通过跟踪,发现虽然进行了INSERT,UPDATE的时候并没有对应的记录。通过查数据表,发现INSERT确实是运行。
请问各位大虾如何解决?下面是日志:
处理中:UPDATE TB_SMSMT_LOG SET FRESULT='True',FSENDTIME=NOW() WHERE FMSGID=160168
INSERT INTO TB_SMSMT_LOG (FMSGID,FMOBILE,FMSG,FATTIME,FPROCESS) VALUES (160169,'15918706602','IbatisNet 是另外一种优秀的Java O/R mapping 框架,当前版本是1.2 。目前属于apache的一个子项目了。','2007-3-27 9:56:56',2)
DELETE FROM TB_SMSMT WHERE FID=160169
SELECT COUNT(0) FROM TB_SMSMT_LOG WHERE FMSGID=160169
搜索到记录数:1
处理中:UPDATE TB_SMSMT_LOG SET FRESULT='True',FSENDTIME=NOW() WHERE FMSGID=160169
INSERT INTO TB_SMSMT_LOG (FMSGID,FMOBILE,FMSG,FATTIME,FPROCESS) VALUES (160170,'15918706617','IbatisNet 是另外一种优秀的Java O/R mapping 框架,当前版本是1.2 。目前属于apache的一个子项目了。','2007-3-27 9:56:56',2)
DELETE FROM TB_SMSMT WHERE FID=160170
SELECT COUNT(0) FROM TB_SMSMT_LOG WHERE FMSGID=160170
搜索到记录数:0
处理中:UPDATE TB_SMSMT_LOG SET FRESULT='True',FSENDTIME=NOW() WHERE FMSGID=160170
INSERT INTO TB_SMSMT_LOG (FMSGID,FMOBILE,FMSG,FATTIME,FPROCESS) VALUES (160171,'15918706626','IbatisNet 是另外一种优秀的Java O/R mapping 框架,当前版本是1.2 。目前属于apache的一个子项目了。','2007-3-27 9:56:56',2)
DELETE FROM TB_SMSMT WHERE FID=160171
SELECT COUNT(0) FROM TB_SMSMT_LOG WHERE FMSGID=160171
搜索到记录数:0

解决方案 »

  1.   

    Access在Insert数据时,会有一定的延时,要及时关闭数据库连接,然后打开,然后才可以取出。
      

  2.   

    access不能同时有超过一个的连接,a线程要打开数据库时,b必须关掉数据库,否则只有等待数据库被关闭
      

  3.   

    xiaxilin(good good study, day day up!) ( ) 信誉:95    Blog  2007-03-27 11:36:23  得分: 0  
     
     
       access不能同时有超过一个的连接,a线程要打开数据库时,b必须关掉数据库,否则只有等待数据库被关闭
      
     
    -------------
    up
      

  4.   

    MODE = Share,做共享可以多连接打开,但,小心INSERT与UPDATE的先后关系还有,共享有多种共享,要做读写共享