如何用编程的方法得到当前计算机的名称和所安装的sql server有那些数据库? ( 积分: 100 )

  • 主题发起人 主题发起人 张利中
  • 开始时间 开始时间

张利中

Unregistered / Unconfirmed
GUEST, unregistred user!
在delphi环境下,如何用编程的方法得到当前计算机的名称和所安装的sql server有那些数据库?并将他们分别放在两个不同的combobox的下拉菜单中。
例如,首先得到当前计算机名称,然后得到sql server 数据库的列表,然后可以
让用户选择自己的数据库,并能显示其中的数据库基本表。
 
在delphi环境下,如何用编程的方法得到当前计算机的名称和所安装的sql server有那些数据库?并将他们分别放在两个不同的combobox的下拉菜单中。
例如,首先得到当前计算机名称,然后得到sql server 数据库的列表,然后可以
让用户选择自己的数据库,并能显示其中的数据库基本表。
 
得到当前的计算机名字,可以用
GetComputerName
至于SQL SERVER中有那些数据库,你要先连上SQL SERVER才行啊。
select * from dbo.sysdatabases
 
//-----------------------------------------------------------
///取得局域网中所有sql server服务器名
procedure RefreshServer(slList : TStrings);
var
SQLServer:Variant;
ServerList:Variant;
i,nServers:integer;
Reg: TRegistry;
SQLName: Array [0..1024] of Char;
HostName: PChar;
Size: Cardinal;
sqlinstancename: string;
begin
SQLServer := CreateOleObject('SQLDMO.Application');
ServerList := SQLServer.ListAvailableSQLServers;
nServers := ServerList.Count;
slList.Clear;
for i := 1 to nServers do
slList.Add(ServerList.Item(i));
if slList.Count < 1 then
slList.Add('(local)');
SQLServer := Null;
ServerList:= Null;
end;
 
连接服务器后,先连接sqlserver 的master数据库

select name from sysdatabases
就可取得此服务器上的数据库名
 
//取得當前電腦名稱
function TForm1.GetCurComputerName: string;
var PName: PChar;
PSize: DWord;
begin
try
Result := '';
GetMem(PName,PSize);
GetComputerName(PName,PSize);
Result := PName;
finally
FreeMem(PName);
end;
end;
//取得當前電腦所有數據庫
with ADODataSet1 do begin
Close;
ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=False;'
+ 'User ID='sa';Initial Catalog=Master;'
+ 'Data Source='當前電腦名稱 ';
CommandText := 'Sp_helpdb';
Open;
ComboBox2.Items.Clear;
while not Eof do begin
ComboBox2.Items.Add(Fields[0].AsString);
Next;
end;
Close;
end;
 
//取得当前电脑名称
function ComputerName: string;
var
Temp: Array[0..MAX_PATH] of Char;
Size: DWord;
begin
Size := MAX_PATH+1;
GetComputerName(Temp, Size);
Result := StrPas(Temp);
end;
//取得当前所有数据库名-----------//楼上的有点问题
with ADODataSet1 do begin
Close;
ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=False;'
+ 'User ID=sa;Initial Catalog=Master;'
+ 'Data Source=当前电脑名称 ';
CommandText := 'exec Sp_helpdb';//返回有关所有数据库的信息
Open;
ComboBox1.Items.Clear;
while not Eof do begin
ComboBox1.Items.Add(Fields[0].AsString);
Next;
end;
Close;
end;
//测试通过
 
function GetMyComputerName: string;
var
cn: pchar;
sz: dword;
begin
GetMem(cn,100);
try
sz := 100;
GetComputerName(cn,sz);
Result := string(cn);
finally
FreeMem(cn);
edn;
end;
得到sql server 数据库的列表,显示其中的数据库基本表,
这些在你另外的帖子上已回答。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
749
SUNSTONE的Delphi笔记
S
S
回复
0
查看
756
SUNSTONE的Delphi笔记
S
后退
顶部