uses ComObj; //服务器列表 function GetSQLServerList(AList: TStrings): Boolean; var i,nServers: integer; vSQLServer: Variant; vServerList: Variant; begin Result := False; if AList = nil then Exit; AList.Clear; Screen.Cursor:=crHourGlass; try try vSQLServer := CreateOleObject('SQLDMO.Application'); vServerList := vSQLServer.ListAvailableSQLServers; nServers:= vServerlist.Count; for i := 1 to nServers do AList.Add (vServerlist.item(i)); Result := True; except end; finally vSQLServer := NULL; vServerList := NULL; Screen.Cursor:=crDefault; end; end; \\获得指定服务器的数据库列表 function GetDBList(WindowsMode:boolean;{是否NT验证}Server,LoginID,LoginPassword:string;DBList:TStrings;var ErrorMsg:string):boolean; const SQL='select DBName=name from master.dbo.sysdatabases'; var i:integer; ADOQuery:TADOQuery; begin Result:=false; if DBList=nil then Exit; DBList.Clear; try ADOQuery:=TADOQuery.Create(nil); try try ADOQuery.ConnectionString:=BuildConnectString(Server,WindowsMode,LoginID,LoginPassword); ADOQuery.SQL.Text:=SQL; ADOQuery.Open; while not ADOQuery.Eof do begin DBList.Add(ADOQuery.FieldByName('DBName').AsString); ADOQuery.Next; end; Result:=true; except on e:Exception do ErrorMsg:=e.Message; end; finally ADOQuery.Close; ADOQuery.Free; end; except on e:Exception do ErrorMsg:=e.Message; end; end; //调用方法:首先初始化服务器列表 GetSQLServerList(Combobox_Server.Items); //选择服务器时刷新数据库列表 procedure TProp_DBLogin.Combobox_ServerChange(Sender: TObject); var ErrorMsg:string; begin GetDBList(Rb_WindowNTMode.Checked, Combobox_Server.Text,Edt_LoginID.Text,Edt_LoginPassword.Text,Cb_DBName.Items,ErrorMsg); end;
//如何用Delphi调用ADO的‘数据连接属性’窗口,就是那个双击ADOConnection弹出的对话框里的‘Build..’按钮的功能。 //uses ADOConEd; if not EditConnectionString(adoconnection1) then Edit1.Text:=ADOConnection1.ConnectionString;
具体我忘了,你可以看看SQLDMO帮助
//服务器列表
function GetSQLServerList(AList: TStrings): Boolean;
var
i,nServers: integer;
vSQLServer: Variant;
vServerList: Variant;
begin
Result := False;
if AList = nil then Exit;
AList.Clear;
Screen.Cursor:=crHourGlass;
try
try
vSQLServer := CreateOleObject('SQLDMO.Application');
vServerList := vSQLServer.ListAvailableSQLServers;
nServers:= vServerlist.Count;
for i := 1 to nServers do
AList.Add (vServerlist.item(i));
Result := True;
except
end;
finally
vSQLServer := NULL;
vServerList := NULL;
Screen.Cursor:=crDefault;
end;
end;
\\获得指定服务器的数据库列表
function GetDBList(WindowsMode:boolean;{是否NT验证}Server,LoginID,LoginPassword:string;DBList:TStrings;var ErrorMsg:string):boolean;
const
SQL='select DBName=name from master.dbo.sysdatabases';
var
i:integer;
ADOQuery:TADOQuery;
begin
Result:=false;
if DBList=nil then Exit;
DBList.Clear;
try
ADOQuery:=TADOQuery.Create(nil);
try
try
ADOQuery.ConnectionString:=BuildConnectString(Server,WindowsMode,LoginID,LoginPassword);
ADOQuery.SQL.Text:=SQL;
ADOQuery.Open;
while not ADOQuery.Eof do
begin
DBList.Add(ADOQuery.FieldByName('DBName').AsString);
ADOQuery.Next;
end;
Result:=true;
except
on e:Exception do ErrorMsg:=e.Message;
end;
finally
ADOQuery.Close;
ADOQuery.Free;
end;
except
on e:Exception do ErrorMsg:=e.Message;
end;
end;
//调用方法:首先初始化服务器列表
GetSQLServerList(Combobox_Server.Items);
//选择服务器时刷新数据库列表
procedure TProp_DBLogin.Combobox_ServerChange(Sender: TObject);
var
ErrorMsg:string;
begin
GetDBList(Rb_WindowNTMode.Checked, Combobox_Server.Text,Edt_LoginID.Text,Edt_LoginPassword.Text,Cb_DBName.Items,ErrorMsg);
end;
//uses ADOConEd;
if not EditConnectionString(adoconnection1) then
Edit1.Text:=ADOConnection1.ConnectionString;