my sql 问题 ( 积分: 0 )

  • 主题发起人 主题发起人 cheapbird
  • 开始时间 开始时间
C

cheapbird

Unregistered / Unconfirmed
GUEST, unregistred user!
var&nbsp;q1,q2:TADOQuery;<br>begin<br>q2:=tadoquery.create(nil);<br>q2.Connection:=ado1;(ADO1&nbsp;连接&nbsp;SQL&nbsp;SERVER)<br>q1:=tadoquery.create(nil);<br>q1.Connection:=ado2;;(ADO2&nbsp;连接&nbsp;MYSQL&nbsp;)<br>q1.sql.add('select&nbsp;*&nbsp;from&nbsp;item&nbsp;where&nbsp;code');&nbsp;<br>q1.Open;<br>WHILE&nbsp;not&nbsp;q1.Eof&nbsp;do<br>begin<br>q2.SQL.Add('insert&nbsp;into&nbsp;item&nbsp;(code,name,quantity)&nbsp;values&nbsp;(:q1,:q2,:q3)'&nbsp;);<br>q2.Parameters.ParamByName('q1').value:=q1.fieldbyname('code').AsString;<br>q2.Parameters.ParamByName('q2').value:=q1.fieldbyname('name').AsString;<br>q2.Parameters.ParamByName('q3').value:=q1.fieldbyname('quantity').AsInteger;<br>q2.ExecSQL;<br>q1.Next;<br>end;<br><br>上面代码只可以保存一条MY&nbsp;SQL的记录,第二条就会报错。是不是MYSQL在DELPHI里只能执行一条查询代码,高手们救命啊!
 
var&nbsp;q1,q2:TADOQuery;<br>begin<br>q2:=tadoquery.create(nil);<br>q2.Connection:=ado1;(ADO1&nbsp;连接&nbsp;SQL&nbsp;SERVER)<br>q1:=tadoquery.create(nil);<br>q1.Connection:=ado2;;(ADO2&nbsp;连接&nbsp;MYSQL&nbsp;)<br>q1.sql.add('select&nbsp;*&nbsp;from&nbsp;item&nbsp;where&nbsp;code');&nbsp;<br>q1.Open;<br>WHILE&nbsp;not&nbsp;q1.Eof&nbsp;do<br>begin<br><br>q2.sql.clear&nbsp;;&nbsp;//这地方应该先把&nbsp;q2.sql清除,然后再add<br><br>q2.SQL.Add('insert&nbsp;into&nbsp;item&nbsp;(code,name,quantity)&nbsp;values&nbsp;(:q1,:q2,:q3)'&nbsp;);<br>q2.Parameters.ParamByName('q1').value:=q1.fieldbyname('code').AsString;<br>q2.Parameters.ParamByName('q2').value:=q1.fieldbyname('name').AsString;<br>q2.Parameters.ParamByName('q3').value:=q1.fieldbyname('quantity').AsInteger;<br>q2.ExecSQL;<br>q1.Next;<br>end;
 
其实你这样一条一条的处理,速度比较慢。<br><br>my&nbsp;sql&nbsp;支持一次性insert&nbsp;多条数据的,不过要自己组织sql语句。<br><br>自己查查吧。
 
是啊!你在循环中没有清除原来的SQL语句啊
 
谢谢啦!在两个都是SQL&nbsp;SERVER的服务器是可以执行没有问题的!换了MYSQL就不行拉!
 
后退
顶部