4

我正在尝试使用 delphi 7 连接到 sql server 2008 中的数据库。我有一个arr_foo包含数据库名称的数组。这就是我的脚本的样子:

for i:=3 to 5 do begin
  sql := 'SELECT * FROM sys.databases WHERE name = '+quotedstr(arr_foo[i]);
  adoquery1.close;
  adoquery1.sql.text := sql;
  adoquery1.open;
  if not adoquery1.isempty then begin
    adoconnection1.close;
    adoconnection1.defaultdatabase := arr_foo[i];
    adoconnection1.open;
  end;
end;

起初,adoquery1 已经连接到 adoconnection1。adoconnection1 连接到 //192.168.5.211 (这是我的服务器)。

问题是当我在 delphi 7 上运行上述脚本时,它返回错误“属性值无效。请确保输入的值正确”并在“adoquery1.open”处停止,但是当我SELECT * FROM sys.databases WHERE name = 'mydb3'在 SQL SERVER Management Studio 2008 中运行查询时,它通常会返回 1 条记录。我的脚本有什么问题?

4

1 回答 1

5

尝试使用DB_ID功能 -

IF DB_ID('AdventureWorks2008R2') IS NOT NULL
    PRINT 'exists'

更改查询:

sql := 'SELECT ID = DB_ID(' + quotedstr(arr_foo[i]) + ')';

并检查 ID 值是否不为空。

于 2013-09-03T05:40:04.193 回答