如何捕捉sql语句的返回值(来看看)!(50分)

  • 主题发起人 主题发起人 hfjacklee
  • 开始时间 开始时间
H

hfjacklee

Unregistered / Unconfirmed
GUEST, unregistred user!
query1.close;
query1.sql.clear;
query1.sql.add('update splib set zsl=10 where tm=1234');
query1.sql.execsql;
执行这个语句之后如何知道是否有条码为‘1234’这种商品,这条语句是否成功执行并生效??[:)][:)]
 
我也想知道, 我是新手
 
先查询一下是否exist不就完了么。
 
直观的方法是打开该数据库去看看是否进行的设定,另外可以判断,
比如:
先声明一个integer变量i
i:=0;
With Query1 do
begin
CLose;
SQL.Clear;
SQL.Add('Select zsl from splib where tm=1234');
Open;
while not eof do
begin
if Fields[0].AsInteger=10 then i:=i+1;
next;
end;
if i:=0 then Successful else failure;
end;
 
query1.close;
query1.sql.clear;
query1.sql.add('select * from splib tm=1234');
query1.open;
if not query1.eof then
begin
query1.close;
query1.sql.clear;
query1.sql.add('update splib set zsl=10 where tm=1234');
query1.sql.execsql;

end;
 
首先感谢朋友们的帮助,你们所提到的方法我都知道,但是我的要点是不需要首先查看有无此记录!用返回值来判断!只是我问题的所在!
 
如果没有这条记录,系统会报错的,你可以捕捉一个异常。try...exception
 
查看连接对象的一个属性(忘了是哪个了)
里面有所有发生的错误
 
Query1.ExecSQL是一个函数,返回影响的rowcount,
如果没效果则返回0,如果不成功会引发异常。
ShowMessage(IntToStr(Query1.ExecSQL));
显示多少行受刚才的语句的影响生效。
比如说你的问题Query1.ExecSQL>0则说明有这条1234纪录。
Query1.ExecSQL 等于几就说明有几条1234这个纪录。
这答案够完美了把??
散分吧。
 
bubble,说得就是我要的意思,但是在程序中此语句“ShowMessage(IntToStr(Query1.ExecSQL));”报错!如果ok就散分。决不食言。
 
bubble,说得就是我要的意思,但是在程序中此语句“ShowMessage(IntToStr(Query1.ExecSQL));”报错!如果ok就散分。决不食言。
 
赚你的50分好难,
如果单独执行Query1.ExecSQL不会出错,
一般就问题不大,
检查一下你的sql语句吧。
另外可以看看ExecSQL的帮助,写得很清楚。
 
既然Query1.ExecSQL是返回int值的,不能声明一个变量吗?在写入到函数里去?
我也想知道
 
to bubble,其实赚50分并不难,但是要值这个价值啊。问题没有解决我就给分那么对其他的朋友不就太不公平了么?
我最讨厌问题半部拉拉就给分。那么给以后查询此问题的朋友一头雾水啊。^_^希望你能理解。
 
我查了delphi关于execsql的帮助,可是无果!
 
用locate先查一查,找到就更新,找不到就提示![8D]
 
query1.close;
query1.sql.clear;
query1.sql.add('select count(*) from splib where tm=1234');
query1.sql.execsql;
然后检查结果集第一个字段的值
 
在你自己写的语句执行完毕的后面,
用QUERY1。LOCATE(……);
IF QUERY1。LOCATE() THEN ……
ELSE ……
不懂LOCATE去看帮助。
 

Similar threads

后退
顶部