怎样将TQUERY的结果放到内存变量中,SQL 的返回玛在那里?(30分)

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

hw123

Unregistered / Unconfirmed
GUEST, unregistred user!
在使用TQUERY 时,如何将查询结果放到变量中,
另外,SQL 语句有返回代码,他在那里?
谢谢指教!!!
 
访问字段值不就是变量吗,如字段是field1,则值为query1.fieldbyname('field1').value
 
what do u mean?
 
比如我在Query1.SQL里加入
select * from UserInfo where Name='kane'
然后用Open后就可以利用FieldbyName来获取返回值
但是如果用ExecSQL的话,就不可以,这两个语句
有什么区别呢,是不是Open会产生一个TempTable,而ExecSQL
只对数据库操作
 
'update,insert,delete' 用execsql,
'open'用open.
 
如果要返回结果集(select)则用 open
如果不用返回结果集(Update,Insert,delete)用EXECSQL
所以EXECSQL当然没有结果返回了。
不知你要作什么,写详细一点,可能有别的办法。
 
可能我没有将问题表述清楚,再说一下
我知道可以用控件TDBEDIT等将结果得到, 但一下不知道
1)但如果查询结果是多行,而不用DBGRID等得到其他行,
2)如何象TTABLE一样移动/查找等各种操作,即tquery 是否既有TTABLE的各种属性和方法
3)如何使用游标,直接将查询结果取到内存变量中,
4)不管是SELECT 还是INSERT,UPDATE,DELETE等SQL 语句,执行完后,都有一个结果
表明是否成功,不成功则有错误代码, 该结果在那里
请各位老兄能给出EXAMPLE说明,万分感谢



 
1)Query.FieldByName('XXX') 得到字段值
2)Query.Next 移动倒本地缓存的下一条记录
Query.Locate() 定位记录
其余方法属性基本同TTable一样
3)你可能将ODBC与BDE混为一谈了
4)至于返回码,应该是有的,我也不知道在那里找
不过不用应该也没有问题,
查询成功者Query返回结果集,失败者触发异常,
查看截取异常代码也可以明白问题所在
 
使用TStoredProc,可以很方便的传入传出参数。
 
感谢各位
jjid:
Tstoreproc 举个EXAMPLES 好吗?
陈荻秋:
在大量纪录INSERT UPDATE 中,必须使用事物 COMMIT, ROLLBACK
如果其中一些不成功,必须ROLLBACK, 在DELPHI中至少应有 象VF中=sqlexec("")
返回结果,-1则不成功,那位执教
 
Tstorproc examples:

var sp1 : TStoredproc;
procedure Tform1.UpdateBtnClick(Sender);
begin
With sp1 do
Begin
Databasename:= ADatabase.Databasename;
CreateParams;
With sp1.Params Do
Begin
Createparam(ftInteger, '@id', ptinput);
Createparam(ftString, '@Name', ptinput);
CreateParam(ftInteger, 'Result, ptinput);
End;
ParambyName('@id').AsInteger:= 1;
ParambyName('@Name').ASString:= 'wanghs';
Try
ADatabase.Starttransaction;
sp1.execsql;
ADatabase.Commit;
except
ADatabase.RollBack;
Showmessage('error');
end;
end;

DELPHI将SQL发到SERVER, 如果查询出错,SERVER发送错误信息给BDE
如果成功,也有返回码, 你可以启动 SQL MONITOR监视看看
不同的SERVER返回码该不一样. 如果出错,会有异常发生,你可以用 TRY。。。EXCEPT END; 去处理
如果查询结果集为recordcount= -1 ,表示 无记录返回
 
感谢各位指导 ,分数是少了点,这里没法加 ,见谅
 
使用你所使用的数据库引擎的API,如BDE API, GDS API, ODBC API等等.
 
没法加??应该有正确答案了吧?请结束此问题。建议
王:10
陈:10
NICKNAME:5
MARLOWE:5
 
多人接受答案了。
 
后退
顶部