delphi程序使用adoquery嵌套查询,SQL在SQL SERVER 2000查询分析器执行正确,但在delphi程序中查询无结果
具体如下:我在sqlserver2000的查询分析器执行以下语句:selecttop1*from选择题库where科目名称='数学'and练习='是'and难度='高'a...
具体如下:我在sql server 2000的查询分析器执行以下语句:
select top 1 * from 选择题库 where 科目名称='数学' and 练习='是' and 难度='高' and 序号 not in (select 题库位置 from 专项练习选择题 where 文件序号='1') order by newid()
这样能得到一条查询结果。但在delphi中,我的程序如下:
with ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('select top 1 * from 选择题库 where 科目名称=:a and 练习=:b and 难度=:c and 序号 not in (select 题库位置 from 专项练习选择题 where 文件序号=:d) order by newid()');
parameters.ParamByName('a').value:='数学';
parameters.ParamByName('b').value:='是';
parameters.ParamByName('c').value:='高';
parameters.ParamByName('d').value:=1;
open;
end;
为什么在程序中,adoquery1.recordcount=0? 展开
select top 1 * from 选择题库 where 科目名称='数学' and 练习='是' and 难度='高' and 序号 not in (select 题库位置 from 专项练习选择题 where 文件序号='1') order by newid()
这样能得到一条查询结果。但在delphi中,我的程序如下:
with ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('select top 1 * from 选择题库 where 科目名称=:a and 练习=:b and 难度=:c and 序号 not in (select 题库位置 from 专项练习选择题 where 文件序号=:d) order by newid()');
parameters.ParamByName('a').value:='数学';
parameters.ParamByName('b').value:='是';
parameters.ParamByName('c').value:='高';
parameters.ParamByName('d').value:=1;
open;
end;
为什么在程序中,adoquery1.recordcount=0? 展开
5个回答
展开全部
现你写的不就是吗?
select
*
from
tab
where
cname=:b
这样就会产生一个参数。然后给参数赋值。
(关query,参与赋值,开query)
select
*
from
tab
where
cname=:b
这样就会产生一个参数。然后给参数赋值。
(关query,参与赋值,开query)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
parameters.ParamByName('a').asstring:='数学';
parameters.ParamByName('b').asstring:='是';
parameters.ParamByName('c').asstring:='高';
这样写就OK 了
parameters.ParamByName('b').asstring:='是';
parameters.ParamByName('c').asstring:='高';
这样写就OK 了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的sql语句在查询分析器里 直接查询有结果吗,如果么有结果 那么recordcount=0就没什么问题了
还有我经常犯的错误 就是连错数据库了。
还有我经常犯的错误 就是连错数据库了。
追问
直接查询有结果,但是呢,程序中的recordcount就是为0,然后,我确定数据库连接没错。因为如果不是嵌套语句就正确。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将执行语句保存到临时文件去检查下,或者用SQL MONITOR追踪下看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
注意查询条件中变量的数据类型:是varchar类型还是int类型,不分清楚是会有错误的!
追问
文件序号的数据类型是int,
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询