function TDCMainForm.GetSQLServerList(AList: TStrings): Boolean; var i: integer; vSQLServer: Variant; vServerList: Variant; begin Result := False; if AList = nil then Exit; AList.Clear; try vSQLServer := CreateOleObject('SQLDMO.Application'); vServerList := vSQLServer.ListAvailableSQLServers; for i := 1 to vServerlist.Count do AList.Add (vServerlist.item(i)); Result := True; finally vSQLServer := NULL; vServerList := NULL; end; end;
data source 就是SQL Server 服务器的服务器名
应该可以做到。
可是,我还不会。抱歉!!!如果是一般的c/s,不用在delphi中获得服务器的服务器名。将ADOConnection的 connectionstring保存在.ini文件中,程序启动调用即可。用友的u8等软件都是这样的。可是修改.ini改变ADOConnection,也可以在提供ADOConnection的connectionstring的修改界面。(读、写.ini文件)
所以推荐上面的这个。
可是修改.ini改变ADOConnection,也可以在提供ADOConnection的connectionstring的修改界面。(读、写.ini文件)password不应该保存在ini中的,那样太危险了。我的做法是分割connectionstring,得到password前的部分,和passwrod后面的部分,中间的password是死的。function SplitConStr( Source : ansistring ):tstrings;
//分割连接字符串,返回除password部分外的两部分字符串
//Result.String[0]为第一部分字符串
//Result.String[1]为第二部分字符串
//Copy Right 549@9:59 2003-7-28
begin
Result := tstringlist.Create;
Result.Add( copy( Source, 1, pos( 'Password', pchar( Source ) ) - 1 ) );
Result.Add( copy( Source, pos( 'Password', pchar( Source ) ), length( Source ) ) );
Result.Strings[1]:=copy( Result.Strings[1], pos( ';',Result.Strings[1]) + 1, length( Result.Strings[1] ) - 1 );
end;
var
i: integer;
vSQLServer: Variant;
vServerList: Variant;
begin
Result := False;
if AList = nil then Exit;
AList.Clear;
try
vSQLServer := CreateOleObject('SQLDMO.Application');
vServerList := vSQLServer.ListAvailableSQLServers;
for i := 1 to vServerlist.Count do
AList.Add (vServerlist.item(i));
Result := True;
finally
vSQLServer := NULL;
vServerList := NULL;
end;
end;
那么可以通过读取该.ini文件来获取服务器名和当前用户名。
我就是这样配置连接数据库的,方便!