用注册表连接数据库

                            //都说登录数据库难,我看这个方法就不错。
//数据库服务器的名字等内容是否需要一个INI文件保存,这样用户可以修改
procedure TForm1.FormCreate(Sender: TObject);
const
      ProMsg='我的管理系统';
var
  wReg :TRegistry;
  tmpPath :array[0..255] of Char;
  SysPath :string;
  tPath :string;
begin
GetSystemDirectory(@tmpPath,255);
sysPath :=StrPas(tmpPath);
tPath :=ExtractFilePath(Application.Exename);

//建立一个Registry实例
wReg := TRegistry.Create;
//-==注册ODBC==-
with wReg do
begin
RootKey:=HKEY_CURRENT_USER;
if OpenKey('Software\ODBC\ODBC.INI\ODBC Data Sources',True) then
  WriteString('MySQL', 'SQL Server')
else  begin
  Application.MessageBox('数据库连接初始化错误,可能你电脑的写入注册表有问题',proMsg,
  mb_ok+MB_ICONEXCLAMATION);
  exit;
end;
CloseKey;
//写入DSN配置信息
if OpenKey('Software\ODBC\ODBC.INI\MySQL',True) then
begin
  WriteString('Database','master');//默认数据库
  WriteString('Description','管理系统数据源'); //数据源描述
  WriteString('Driver',SysPath+'\SQLSRV32.dll'); //SQL Server驱动程序DLL文件
  WriteString('LastUser','sa' );//登录SQL Server的ID
  WriteString('Server','MyServer'); //SQL Server服务器的名称,此处的Myserver为的我的电脑名称,实际使用时要根据服务器的不同而调整

end
else begin
  Application.MessageBox('数据库连接初始化错误,可能你电脑的写入注册表有问题',proMsg,
  mb_ok+MB_ICONEXCLAMATION);
  exit;
end;
CloseKey;
Free;
end;

with ADOConnection1 do begin
ConnectionString :='Provider=MSDASQL.1;Password=MyPW;Persist Security Info=True;User ID=sa;Data Source=MySQL';
try
Connected :=true;
except
showmessage('打开数据库时出错');
end;
end;
end.  


                                

查看回复