query1.sql.clear; query1.sql.add('select * from Table where S_State=:n'); query1.parambyname('n').asinteger=参数; if query1.active then query1.close; query1.open;
你代delphi中是怎么写的?
with adoquery do begin close; sql.clear; sql.add('select * from table where s_state=:s'); parambyname('s').value:=n; prepare; open; end;
我的代码中是: with adoquery do begin close; sql.clear; sql.add('select * from table where s_state=n');prepare; open; end;
我的代码中是: with adoquery do begin close; sql.clear; sql.add('select * from table where s_state=n');prepare; open; end;其中:S_State为整形字段,n为整形变量!
楼上几位那样写比较规范保险,但是不觉得select * from Table where S_State=n 这样有什么错误,是不是还有其他地方错误?要么。。是不是又是ADO的问题(你用的是ADO么)
不好意思,没有注意看把代码贴出来了,你换一个ADOCONNECTION的PROVIDER试试
你的变量是在DELPHI里声明的吗 那SQL应该不认得吧 sql.add('select * from table where'+ inttostr(s_state)+'='+''''+inttostr(n)+''''); 试试
query1.sql.add('select * from Table where S_State=:n');
query1.parambyname('n').asinteger=参数;
if query1.active then query1.close;
query1.open;
with adoquery do
begin
close;
sql.clear;
sql.add('select * from table where s_state=:s');
parambyname('s').value:=n;
prepare;
open;
end;
with adoquery do
begin
close;
sql.clear;
sql.add('select * from table where s_state=n');prepare;
open;
end;
with adoquery do
begin
close;
sql.clear;
sql.add('select * from table where s_state=n');prepare;
open;
end;其中:S_State为整形字段,n为整形变量!
sql.add('select * from table where'+ inttostr(s_state)+'='+''''+inttostr(n)+'''');
试试
整型不用加‘’的
sql.add('select * from table where'+ inttostr(s_state)+'='+inttostr(n));
或者
sql.add('select * from table where'+ inttostr(s_state)+'=:n);
adoquery.parameters.ParamByname('n').Value :=n;
open;
试一下
整形变量 应该使用 '+n+' 使用单绰号及加号来引用 其实对于整形变量 ,在数据库里定义为字符型还好,避免了这个引用的错误,需要用的时候再转回整形就行了
begin
Close;
sql.clear;
sql.add('select * from Table where S_State=:s');
parambyname('s').AsInteger=n;
open;
end;
begin
Close;
sql.clear;
sql.add('select * from table where s_state='''+inttostr(n)+'''');
parambyname('s').AsInteger=n;
open;
end;