我正在尝试使用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'但是当我在SQL SERVER Management Studio 2008中运行查询SELECT * FROM sys.databases WHERE name = 'mydb3'
时,它会正常返回1条记录。我的剧本出了什么问题?
答案 0 :(得分:5)
尝试使用DB_ID
功能 -
IF DB_ID('AdventureWorks2008R2') IS NOT NULL
PRINT 'exists'
更改查询:
sql := 'SELECT ID = DB_ID(' + quotedstr(arr_foo[i]) + ')';
并检查ID值是否为空。