【发布时间】:2016-04-21 13:16:32
【问题描述】:
数据库
当我在数据库中运行以下查询时:
选择 T.ID 来自 TABLA T 其中 ID=3结果:
没有返回行
现在我尝试在 Delphi 中显示消息说“记录不存在”。
在表单中我有一个组件 TQuery 调用 qValidacion 成功连接数据库 Oracle 11g。
试试 1
过程 TfPrueba.ButtonAceptarClick(Sender: TObject); 开始 qValidacion.关闭; qValidacion.SQL.Add('SELECT T.ID'); qValidacion.SQL.Add('FROM TABLA T'); qValidacion.SQL.Add('WHERE ID=3'); qValidacion.打开; qValidacion.First; 如果(不是 qValidacion.Eof)那么 开始 ShowMessage('记录不存在'); //它应该显示消息,但不显示 结尾; qValidacion.SQL.清除; 结尾;【问题讨论】:
-
我不关注。您有一个不返回任何行的查询。你到底在问什么?
-
您是否检查过以确保
TABLA中至少有一行包含ID = 3? -
你已经写了
if (not qValidacion.Eof)...- 你想检查你是否在Eof,而不是如果你不在Eof。然而,检查这一点的惯用方法是检查qValidacion.RecordCount = 0。 -
qValidacion.SQL.Add('SELECT T.ID');- 坏主意 - 可能已经有东西了!要么在第一行之前拨打SQL.Clear,要么直接拨打SQL.Text := ' SELECT ... WHERE T.ID=3'; -
@J... - 并将所有数据下载到客户端,也许是所有表,然后内存溢出?惯用的方法是调用
if qValidation.IsEmpty then ...