Sql server SQL查询输出到Delphi中的变量?
我想知道如何将SQL查询结果放入变量中 我知道这一点Sql server SQL查询输出到Delphi中的变量?,sql-server,delphi,unidac,Sql Server,Delphi,Unidac,我想知道如何将SQL查询结果放入变量中 我知道这一点 integerVariable := UniQuery1.RecordCount; 但是这个呢 integerVariable := SELECT COUNT(*) FROM Orders WHERE Amount='1000' 您需要做的是首先“执行”sql,然后检查结果,如果结果存在,然后将其存储在变量中,我的意思是: procedure ...; var LCount: Integer; begin LCount := 0
integerVariable := UniQuery1.RecordCount;
但是这个呢
integerVariable := SELECT COUNT(*) FROM Orders WHERE Amount='1000'
您需要做的是首先“执行”sql,然后检查结果,如果结果存在,然后将其存储在变量中,我的意思是:
procedure ...;
var
LCount: Integer;
begin
LCount := 0;
//
// note that I am doubling the single quote to escape it
//
// set the query
UniQuery1.SQL.Text := 'SELECT COUNT(*) FROM Orders WHERE Amount=''1000'';';
//
// "execute" it
//
UniQuery1.Open;
//
// SELECT COUNT(*) will return 1 record with 1 field
// most likely the field name is 'count' <= lower case
// but we are sure that there should be only 1 field so we
// access it by Fields[Index].As[TYPE]
//
LCount := UniQuery1.Fields[0].AsInteger;
ShowMessageFmt('Total count of orders with Amount = 1000: %d', [LCount]);
end;
程序。。。;
变量
l计数:整数;
开始
l计数:=0;
//
//请注意,我将单引号加倍以避开它
//
//设置查询
UniQuery1.SQL.Text:=“从订单中选择计数(*),其中金额=”“1000”“;”;
//
//“执行”它
//
唯一1.开放;
//
//选择计数(*)将返回1条记录和1个字段
//最有可能的字段名是“count”Ehm,什么?我想你的意思是类似于UniQuery1.Fields[0].AsInteger
的东西,如果你在数据集的第一行,但我们甚至不知道UniQuery1
@TLama UniQuery1:TUniQuery是什么类型,他/她使用的UniDAC组件来自别忘了接受解决你问题的答案。它将帮助未来的访问者识别正确的解决方案。谢谢,祝你愉快!显然,这个特定的查询将始终返回一个结果,而且,它将返回一个值(与NULL相反),因为COUNT()
始终返回一个值,而不是NULL。因此,在这种情况下,notisempty
测试可以省略。@Andriy是对的。也不需要UniQuery1.FindFirst
。我不知道TUniQuery
,但执行TUniQuery.Open之后,数据集不是已经在第一行了吗?像UniQuery1.Open这样的东西是不够的;LCount:=UniQuery1.字段[0]。AsInteger代码>?字段名不是count
。要指定名称,请使用选择count(*)作为RecordCount
并使用UniQuery1.FiledByName('RecordCount').AsInteger
。另外,最好在SQL.Text
中使用参数,而不是将单引号加倍。@kobik我写道“很可能字段名是'count'”,在Postgres中,如果没有定义别名,字段名将是“count”,我不知道SQL server