因事务中使用多个query操作出现程序阻塞(估计和MSSQL的锁有关)——困扰好几天了,HELP(200分)

  • 主题发起人 主题发起人 Geminiyc
  • 开始时间 开始时间
我的也是delphi7,我也觉得奇怪,应该不会有这样的错误的<br>其他配置是xp,sql server2000 个人版<br><br>我决定重新装机试试,从操作系统开始!<br>痛苦啊
 
select 數據時,不要放在事務中,這樣沒有意義,在insert或update時,啟用事務。<br>比如:<br>dm.localdb.StartTransaction;<br>&nbsp; try<br>&nbsp; &nbsp; &nbsp; dm.query1.close;<br>&nbsp; &nbsp; &nbsp; dm.query1.sql.Text :='insert into x_kh (jgh,khdm) values(''1000'',''12345678'')';<br>&nbsp; &nbsp; &nbsp; dm.query1.execsql;<br>&nbsp; dm.localdb.commint;<br>&nbsp; &nbsp;except<br>&nbsp; dm.localdb.rollback<br>end;<br>這樣可能會好些。試試吧
 
在事务中包含select是难免的。<br><br>我重新安装了,问题依旧。<br><br>我又测试了一下,<br>&nbsp; &nbsp; &nbsp; dm.query1.close;<br>&nbsp; &nbsp; &nbsp; dm.query1.sql.Text :='insert into x_kh (jgh,khdm) values(''1000'',''12345678'')';<br>&nbsp; &nbsp; &nbsp; dm.query1.execsql;<br><br>&nbsp; &nbsp; &nbsp; dm.Query1.close;<br>&nbsp; &nbsp; &nbsp; dm.Query1.sql.text:='select * from k_zhk';<br>&nbsp; &nbsp; &nbsp; dm.Query1.open;<br><br>&nbsp; &nbsp; &nbsp; dm.Query3.close;<br>&nbsp; &nbsp; &nbsp; dm.query3.sql.text:='select * from x_kh'; &nbsp; <br>&nbsp; &nbsp; &nbsp; dm.Query3.Open; &nbsp; //执行到此时,程序阻塞<br>在上面的3个query中,只要第二个query的查询有结果,哪怕只要有一条,那么第三个query就要出问题。但是若第二个query为空,那么第三个就正常。<br><br>我估计easykoala说他怎么试都正常,是不是因为新建表的原因,里面没有记录,所以正常。
 
加上with[readuncommitted]就可以了
 
我用Delphi7加补丁,SQL2000里面的Sample数据库NorthWind,<br>使用Products表做试验,里面含有数据。<br>新建Alias名时,选择SQL Server而非MSSQL。<br>BDE基本被淘汰,请选用ADO或dbexpress,<br>但遗憾的是,MSSQL Server的dbexpress驱动程序不是运作的很好(但绝对可以使用),<br>记得加上补丁
 
多人接受答案了。
 
你的问题解决了么,如解决,能否给出解决方案?
 
我用了最狠的一招<br>——离职!<br>成功解决了所有的难题。<br><br>——屈服了
 
后退
顶部