delphi2007的dbexpress的TSQLQuery问题 ( 积分: 100 )

  • 主题发起人 主题发起人 白乐天
  • 开始时间 开始时间

白乐天

Unregistered / Unconfirmed
GUEST, unregistred user!
刚刚升级到delphi2007,发现dbexpress的TSQLQuery有个奇怪的问题。就是Query在打开一次后再close就会报access错误,<br><br>&nbsp;&nbsp;Query2.Close;<br>&nbsp;&nbsp;Query2.SQL.Clear;<br>&nbsp;&nbsp;Query2.SQL.Add('.........');<br>&nbsp;&nbsp;try<br>&nbsp;&nbsp;Query2.Open;//第一次是正常的<br><br><br>&nbsp;&nbsp;Query2.Close;;//到这里就报错access<br>&nbsp;&nbsp;Query2.SQL.Clear;<br>&nbsp;&nbsp;Query2.SQL.Add('.........');<br>&nbsp;&nbsp;try<br>&nbsp;&nbsp;Query2.Open;<br><br><br>请问这是为什么啊,是不是需要设置什么属性,我查了半天也没有结果,请有经验的朋友指点一下,十分感谢。
 
2次open中有没有execsql操作?
 
估计你的&nbsp;Query2&nbsp;是动态创建的,在第二次&nbsp;Query2.Close&nbsp;之前已经&nbsp;Query2.Free;
 
to&nbsp;7030兄&nbsp;:没有execsql的操作<br><br>to&nbsp;kaida兄:不是动态控件。<br><br>进入跟踪调试时,发现是unit&nbsp;DBXCommon里报的错<br><br>destructor&nbsp;TDBXReader.Destroy;<br>begin<br>&nbsp;&nbsp;if&nbsp;FCommand&nbsp;&lt;&gt;&nbsp;nil&nbsp;then<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;FCommand.CloseReader;//就是执行到这一步报的错。请问这里是做什么的,如何避免<br>&nbsp;&nbsp;&nbsp;&nbsp;FCommand&nbsp;:=&nbsp;nil;<br>&nbsp;&nbsp;end;<br>&nbsp;&nbsp;FreeAndNil(FDbxRow);<br>&nbsp;&nbsp;FValues&nbsp;:=&nbsp;nil;<br>&nbsp;&nbsp;inherited;<br>end;<br><br>请各位继续赐教
 
两次open之间的其他操作我删除了,因为没有跟query有关的,都是一些赋值操作。<br><br>相同的代码在delphi7里面执行是完全没问题的,到了delphi2007却报错
 
我自己找到原因了,在d2007的readme里,是因为mysql5和mysql4用d2007时要注意驱动搭配。<br><br>具体4组搭配如下,搭错就会出问题。和各位朋友分享。<br><br>LibMySQL.dll&nbsp;(4.0.XX)&nbsp;DBXMysA30.dll&nbsp;MySQL&nbsp;4.0.XX&nbsp;Server&nbsp;<br>LibMySQL.dll&nbsp;(5.0.XX)&nbsp;DBXMys30.dll&nbsp;MySQL&nbsp;4.0.XX&nbsp;Server&nbsp;<br>LibMySQL.dll&nbsp;(5.0.XX)&nbsp;DBXMys30.dll&nbsp;MySQL&nbsp;4.1.XX&nbsp;Server&nbsp;<br>LibMySQL.dll&nbsp;(5.0.XX)&nbsp;DBXMys30.dll&nbsp;MySQL&nbsp;5.0.XX&nbsp;Server
 
后退
顶部