function RegODBCDNSName(const DNSName, Server, DatabaseName: string): boolean; var Reg: TRegistry; begin Reg := TRegistry.Create(); try with Reg do begin RootKey := HKEY_LOCAL_MACHINE; if OpenKey('SoftWare\ODBC\ODBC.INI\ODBC Data Sources', true) then WriteString(DNSName, 'SQL Server') else begin ShowErrorInfo('ODBC 初始化错误!'); Result := False; Exit; end; CloseKey; if OpenKey('SoftWare\ODBC\ODBC.INI\' + DNSName, true) then begin WriteString('Database', DatabaseName); WriteString('LastUser', 'sa'); WriteString('Server', Server); WriteString('Driver', 'C:\WINNT\System32\SQLSRV32.dll'); end else begin ShowErrorInfo('ODBC 初始化错误!'); Exit; end; end; finally if Reg <> nil then begin Reg.CloseKey; Reg.Free; end; end; end;
var
Reg: TRegistry;
begin
Reg := TRegistry.Create();
try
with Reg do
begin
RootKey := HKEY_LOCAL_MACHINE;
if OpenKey('SoftWare\ODBC\ODBC.INI\ODBC Data Sources', true) then
WriteString(DNSName, 'SQL Server')
else
begin
ShowErrorInfo('ODBC 初始化错误!');
Result := False;
Exit;
end;
CloseKey;
if OpenKey('SoftWare\ODBC\ODBC.INI\' + DNSName, true) then
begin
WriteString('Database', DatabaseName);
WriteString('LastUser', 'sa');
WriteString('Server', Server);
WriteString('Driver', 'C:\WINNT\System32\SQLSRV32.dll');
end
else
begin
ShowErrorInfo('ODBC 初始化错误!');
Exit;
end;
end;
finally
if Reg <> nil then
begin
Reg.CloseKey;
Reg.Free;
end;
end;
end;
http://www.chinabyte.com.cn/20010625/186771.shtml
因为delphi是用BDE调用ODBC的,所以密码可保存在一个TDataBase控件中