mysql - 德尔福、ADO、MySQL : checking whether an empty set was returned

标签 mysql delphi ado

Delphi的版本是7。

我正在向 MySQL 数据库发送查询。可以返回的是一组数据行或只是一个空集。没有什么不寻常的。但是我不知道如何制作一个检查机制来检查它是一组数据还是一个空集。

这是一些代码:

var
    Q: TADOQuery;
begin
    Q := TADOQuery.Create(self);
    Q.Connection := ADOConnection;

    Q.SQL.Add('CALL get_shopping_cart_list()'); // Call stored procedure
    Q.Open;                                     // Send query and get some
                                                // results back
    // PSEUDOCODE
    // IF get_shopping_cart_list() RETURNS A NON-EMPY SET THEN
    //     SHOW WHAT WE HAVE
    // ELSE
    //     SHOW A MESSAGE THAT SAYS 'EMPTY SET'

    Q.Free;
end;

最佳答案

根据 Delphi 版本,它可以是

 if Q.IsEmpty then ...

 if Q.BOF and Q.EOF then ...

您还可以深入了解 Microsoft ADO。只要您的查询中没有多个语句,Q.RecordSet.EOFQ.RecordSet.BOF 就应该这样做。


另外请不要忘记保护错误的内存管理。

 Q := TADOQuery.Create;
 try
    .... do this or that ....
    .... do this or that ....
    .... do this or that ....
 finally
    Q.free;
 end;

关于mysql - 德尔福、ADO、MySQL : checking whether an empty set was returned,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15907259/

相关文章:

sql - 公用表表达式错误

java - 尝试将学生添加到数据库时出错

PHP mysql全文 bool 搜索,如何清理搜索的关键字并匹配所有单词?

mysql - 通过 Linux 终端创建 MySQL 数据库并通过 phpMyAdmin 连接它

Delphi FMX 验证 EditText 是否仅包含数字?

vba - 以递归方式将 MS Access 表单和类/模块导出到文本文件?

mysql - 在bigtable 80 0'000' 000 row MariaDB InnoDB上搜索1行数据

sql-server-2005 - Delphi 应用程序使用 COMMIT 和 ROLLBACK 进行多个 SQL 更新

delphi - 在Delphi 7中制作Windows集成窗体样式

sql-server - FieldByName 注入(inject)安全吗?