1

我正在使用 ADO 连接从 Inno 设置连接到 SQL,我正在运行一些选择查询,我将它捕获到一个变量中,如果选择查询返回空行,它会抛出“无效的变体类型转换”错误。我不确定我是否可以使用该VarIsNull选项以及如何在我的代码中使用它。请帮忙。下面是示例代码。

ADOCommand := CreateOleObject('ADODB.Command');
 ADOCommand.ActiveConnection := ADOConnection;
 SQLQuery := 'SELECT Name FROM sys.databases where name=''' + DBValue + '''';
 ADOCommand.CommandText := SQLQuery;
 ADOCommand.CommandType := adCmdText;
 ADORecordset := ADOCommand.Execute;
 Name := ADORecordset.Fields(0);
4

1 回答 1

1

您可以在将值分配给 Name 变量之前检查返回的记录集是否为空。

一个空的记录集将在您打开它后立即为 EOF 属性返回 true,在代码中它可能类似于以下示例:

  SQLQuery := 'SELECT Name FROM sys.databases where name=''' + DBValue + '''';
  ADOCommand.CommandText := SQLQuery;
  ADOCommand.CommandType := adCmdText;
  ADORecordset := ADOCommand.Execute;
  if ADORecordset.EOF then
  begin
    MsgBox('No records', mbInformation, mb_Ok);
    exit;
  end
  else begin
    Name := ADORecordset.Fields(0);
    MsgBox('Name ''' + Name + '''.', mbInformation, mb_Ok);
  end;
于 2012-11-08T05:28:32.047 回答