如何编程获取SQLServer2000数据库列表的问题,一点思路没有,在线等待〉〉〉 问题是这样的: 根据主机名称,登陆用户名和密码,如何获取数据库名称列表啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 uses Comobj;function TDatabaseAssertForm.GetSQLServerList(var CB: TComboBox): boolean; //取得SQLSERVEREB服务器列表涵数。var i: integer; SQLServer: Variant; ServerList: Variant;begin Result := False; CB.Items.Clear; try SQLServer := CreateOleObject('SQLDMO.Application'); ServerList := SQLServer.ListAvailableSQLServers; for i := 1 to Serverlist.Count do CB.Items.Add(Serverlist.item(i)); Result := True; finally SQLServer := NULL; ServerList := NULL; end;end;function TDatabaseAssertForm.GetDatabaseList(var CB: TComboBox; BackupOrRestore: boolean): boolean; //获取数据库列表var adocon: TADOConnection; Quy: TADOQuery;begin try adocon := TADOConnection.Create(nil); quy := TADOQuery.Create(nil); try adocon.LoginPrompt := false; if BackupOrRestore then adocon.ConnectionString := 'Provider = SQLOLEDB.1;Password =' + trim(self.Edt_BackDbServerPwd.text) + '; Persist Security Info = True;User ID = ' + trim(self.Edt_BackSQLUser.Text) + ';Initial Catalog = master; Data Source =' + trim(self.CB_BackServerList.Text) else adocon.ConnectionString := 'Provider = SQLOLEDB.1;Password =' + trim(self.Edt_RestoreDbServerPwd.text) + '; Persist Security Info = True;User ID = ' + trim(self.Edt_RestoreSQLUser.Text) + ';Initial Catalog = master; Data Source =' + trim(self.CB_RestoreServerList.Text); adocon.Open; except TMessageBox.ErrorMsgBox('数据库连接出错!'); result := false; exit; end; quy.Close; quy.Connection := adocon; quy.SQL.text := 'select * from sysdatabases'; //quy.SQL.text:='select * from sysobjects where (xtype=''u'' or xtype=''p'') and category<>2 order by name'; quy.Open; cb.Items.Clear; cb.Items.Add(''); while not quy.Eof do begin cb.Items.Add(quy.fieldbyname('name').AsString); quy.Next; end; quy.Close; result := true; finally FreeaNdnil(adocon); freeandnil(quy); end;end; 有关ADOQuery问题 登录窗口与主窗口的问题 只能运行一个程序的实例 大家快来讨论哪? 关于水晶报表的问题 怪了,我输入正确密码仍然提示错误!!!,高手给修改一下! 关于物业管理系统 关于MIDAS,MTS,COM+和多层结构的讨论 ACCESS导出数据的问题 有谁知道比较好的delphi反编译工具??? 关于时时改变控件大小的问题。 到底如何正确获得CPU主频...
function TDatabaseAssertForm.GetSQLServerList(var CB: TComboBox): boolean; //取得SQLSERVEREB服务器列表涵数。
var
i: integer;
SQLServer: Variant;
ServerList: Variant;
begin
Result := False;
CB.Items.Clear;
try
SQLServer := CreateOleObject('SQLDMO.Application');
ServerList := SQLServer.ListAvailableSQLServers;
for i := 1 to Serverlist.Count do
CB.Items.Add(Serverlist.item(i));
Result := True;
finally
SQLServer := NULL;
ServerList := NULL;
end;
end;
function TDatabaseAssertForm.GetDatabaseList(var CB: TComboBox; BackupOrRestore: boolean): boolean; //获取数据库列表
var
adocon: TADOConnection;
Quy: TADOQuery;
begin
try
adocon := TADOConnection.Create(nil);
quy := TADOQuery.Create(nil);
try
adocon.LoginPrompt := false;
if BackupOrRestore then
adocon.ConnectionString := 'Provider = SQLOLEDB.1;Password =' + trim(self.Edt_BackDbServerPwd.text) + '; Persist Security Info = True;User ID = ' + trim(self.Edt_BackSQLUser.Text) + ';Initial Catalog = master; Data Source =' + trim(self.CB_BackServerList.Text)
else
adocon.ConnectionString := 'Provider = SQLOLEDB.1;Password =' + trim(self.Edt_RestoreDbServerPwd.text) + '; Persist Security Info = True;User ID = ' + trim(self.Edt_RestoreSQLUser.Text) + ';Initial Catalog = master; Data Source =' + trim(self.CB_RestoreServerList.Text);
adocon.Open;
except
TMessageBox.ErrorMsgBox('数据库连接出错!');
result := false;
exit;
end;
quy.Close;
quy.Connection := adocon;
quy.SQL.text := 'select * from sysdatabases';
//quy.SQL.text:='select * from sysobjects where (xtype=''u'' or xtype=''p'') and category<>2 order by name';
quy.Open;
cb.Items.Clear;
cb.Items.Add('');
while not quy.Eof do
begin
cb.Items.Add(quy.fieldbyname('name').AsString);
quy.Next;
end;
quy.Close;
result := true;
finally
FreeaNdnil(adocon);
freeandnil(quy);
end;end;