日期:2014-05-19  浏览次数:20953 次

多线程操作ACCESS的问题
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

------解决方案--------------------
GZ & UP
------解决方案--------------------
ACCESS不支持多线程
------解决方案--------------------
Access在Insert数据时,会有一定的延时,要及时关闭数据库连接,然后打开,然后才可以取出。
------解决方案--------------------
access不能同时有超过一个的连接,a线程要打开数据库时,b必须关掉数据库,否则只有等待数据库被关闭
------解决方案--------------------
xiaxilin(good good study, day day up!) ( ) 信誉:95 Blog 2007-03-27 11:36:23 得分: 0


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


-------------
up
------解决方案--------------------
MODE = Share,做共享可以多连接打开,但,小心INSERT与UPDATE的先后关系

还有,共享有多种共享,要做读写共享