请教insert和updata问题!(100分)

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

cam

Unregistered / Unconfirmed
GUEST, unregistred user!
请问客户端的clientdataset中的commandtext:='insert into tablename(colume1,colume2) values('''+edit1.text+''','''+edit2.text+''')';
总是提示'commandtext does not return a result set'.
我中间层使用的是adodataset,是关闭的,为什么使用select没有问题,insert就不行.那updata呢?
请教insert的正确使用写法.谢谢![:)]


 
那是因为你用“open”的方法执行,它是用来返回数据集的,insert等应该用“execute”
 
clientdataset执行commandtext是用open方法,也就是说必须返回一个结果(包括
空的结果),所以select没有问题,你的insert虽然执行了(你可看一下数据库)
但没有返回数据集,所以报错。

可以用datarequest将insert语句传到服务器,用Tquery或Tadocommand执行。
 
对!select可以用sql.open 而insert和update应该用sql.exec
 
如果你非要用这个,那就try保护一下得了,不会显示错误,也达到了你的目的,不过不推荐。
 
UpdateSQL:='Update myDB set RQMC="' + Edit1.Text + '",RQLB="' + comboBox1.Text +
'",FTBH="' + Edit4.Text + '",TTBH="' + Edit5.Text + '",FTCZ="' + Edit2.Text +
'",TTCZ="' + Edit3.Text + '",FTXS="' + ComboBox2.Text + '",ZZXS="' + ComboBox3.Text +
'",RQGG="' + Edit6.Text + '"' +
' Where BGBH="' + BGBgbh + '"';
with ctDataModule1.ClientDataSet1 do
begin
close;
commandtext:=UpdateSQL;
Execute;
end;
 
呵呵,有结果集返回的,用Open方法
没有结果集返回的用Excute(或者Execsql,对应于TQuery)
 
后退
顶部