关于数据库的问题(100分)

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

hhhkkk

Unregistered / Unconfirmed
GUEST, unregistred user!
我在delphi中有一句:
.......
.....
var jh:integeer;
......
.....
jh:=strtoint(edit1.text);
.......
......
query1.sql.add('select * from ab.db where no=jh');
No是我建的数据库中一字段。
每次运行总是出错,SQL的错误!
请各位高手指教!!!
 
query1.sql.add('select * from ab.db where no='+IntToStr(jh));
 
费那劲儿干什么, 既然原来就是string了, 何必转来转去呢, 直接:

query1.sql.add('select * from ab.db where no='+edit1.text);

不就是了. ^_^
 
1.query1.sql.add('select * from ab.db where no='+jh);

2.query1.sql.add('select * from ab.db where no='''+edit1.text+'''');

 
no是什么型的?
 
是呀!no是什么型的?

 
No是I型
多谢!!
 
那是因为你的SQL语句没有写对。应该用参变量。
var jh:integeer;
.....
jh:=strtoint(edit1.text);
......
query1.sql.add('select * from ab.db where no= :param');
query1.parambyname('param').asinteger := jh ;
(param 是参变量名,可以任意起。)
 
为了防止Edit1.text为无效数字需要try一下:
var jh:integeer;
......
.....
try
jh:=strtoint(edit1.text);
.......
......
query1.sql.add('select * from ab.db where no='+edit1.text);
except
//转换不成功时的处理
end;
 
1.query1.sql.add('select * from ab.db where no='+jh);
适合I型
2.query1.sql.add('select * from ab.db where no='''+edit1.text+'''');
适合Char型
你为什么不试试呢?

 
try
s:=Format('select * from ab.db where no=%d',[StrToInt(edit1.text)];
query1.sql.clear;
query1.sql.add(s);
query1.Open;
except
end
 
.......
.....
var jh:integeer;
......
.....
try
jh:=strtoint(edit1.text);
.......
......
with query1 do begin
close;
sql.clear;
sql.add('select * from ab.db where no=:v0');
params[0].asinteger := jh;
open;
end;
except
showmessage('出错!');
end
 
多谢各位的指教!昨天系统出点问题,未能及时答复各位,请原谅!!
 
wumeng的说法有道理,你可以试试。
同意wumeng。
 
好象不是这个原因,NO好象是PARADOX的关键字,所以不能作为
字段名。
 
是的,NO是PARADOX的关键字,
语句必须这样写:
query1.sql.add('select * from ab.db where ab.''no''='+jh);
 
多人接受答案了。
 
后退
顶部