如何检查数据库是否存在?

dap*_*ini 4 sql-server delphi database-connection delphi-7 sql-server-2008

我正在尝试使用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;
Run Code Online (Sandbox Code Playgroud)

首先,adoquery1已经连接到adoconnection1.adoconnection1连接到//192.168.5.211(这是我的服务器).

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

Dev*_*art 5

尝试使用DB_ID功能 -

IF DB_ID('AdventureWorks2008R2') IS NOT NULL
    PRINT 'exists'
Run Code Online (Sandbox Code Playgroud)

更改查询:

sql := 'SELECT ID = DB_ID(' + quotedstr(arr_foo[i]) + ')';
Run Code Online (Sandbox Code Playgroud)

并检查ID值是否为空.