读书人

怎么将数据库配置文件写入注册表?并在

发布时间: 2012-03-25 20:55:16 作者: rapoo

如何将数据库配置文件写入注册表?并在每次运行软件时,判断数据库是否连接?
如何将数据库配置文件写入注册表?并在每次运行软件时,判断数据库是否连接?

数据库是sql2000...急...请给出代码做为参考.谢谢

[解决办法]
uses Registry;

function setdb(参数自已去传):boolean;
var
canReg:TRegistry;

begin
try
canreg:=tregistry.Create;
canreg.RootKey:=HKEY_LOCAL_MACHINE; //将根键设置为KEY_LOCAL_MACHINE
canreg.OpenKey( '\SOFTWARE\Microsoft\windows\CurrentVersion\ ',true);
canreg.WriteString( 'setup ', 'Provider=SQLOLEDB.1;Integrated urity=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=yang;Data Source=SHIP ');
except
end;

end;

判断连接可以
try
ADOTable1.open;
except
showmessage( '未连接 ');
end;


[解决办法]
写注册表

unit uDataInit;

interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, dxEdLib, dxCntner, dxEditor,
dxExEdtr,ComObj, DB, ADODB,inifiles,Registry;

type
TfrmDataInit = class(TForm)
Panel1: TPanel;
Bevel3: TBevel;
Bevel4: TBevel;
Label1: TLabel;
GroupBox1: TGroupBox;
Label2: TLabel;
Label3: TLabel;
dxPickEdit1: TdxPickEdit;
dxEdit1: TdxEdit;
dxEdit2: TdxEdit;
dxEdit5: TdxEdit;
RadioButton1: TRadioButton;
Label5: TLabel;
dxEdit6: TdxEdit;
CreateData: TdxEdit;
ChooseData: TdxPickEdit;
dxEdit4: TdxEdit;
dxEdit3: TdxEdit;
Comm: TADOConnection;
Query: TADOQuery;
Bevel1: TBevel;
Panel3: TPanel;
Bevel5: TBevel;
Bevel6: TBevel;
sbCx: TSpeedButton;
Bevel7: TBevel;
SpeedButton2: TSpeedButton;
DataInit: TADOQuery;
procedure sbCxClick(Sender: TObject);
procedure ChooseDataDropDown(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
OK:integer;
end;

var
frmDataInit: TfrmDataInit;

implementation

uses uLogin, udmSkh, uSkh, ubkcl;


{$R *.dfm}

procedure TfrmDataInit.sbCxClick(Sender: TObject);
begin
Close;
end;

procedure TfrmDataInit.ChooseDataDropDown(Sender: TObject);
var
SQLServer:Variant;
Server:Variant;
db:Variant;
i,j:integer;
begin
if dxPickEdit1.Text= ' ' then
begin
MessageBox(frmDataInit.Handle, '请先选择服务器! ', '销售管理系统 ',MB_ICONINFORMATION);
Exit;
end;
if dxEdit1.Text= ' ' then
begin
MessageBox(frmDataInit.Handle, '请输入你的登录帐号和密码! ', '销售管理系统 ',MB_ICONINFORMATION);
Exit;
end;
try

SQLServer:=CreateOleObject( 'SQLDMO.Application ');
Server:=CreateOleObject( 'SQLDMO.SQLServer ');
Server.Connect(dxPickEdit1.Text,dxEdit1.Text,dxEdit2.Text);
db:=Server.DataBases;
i:=db.Count;
ChooseData.Items.Clear;
for j:=1 to i do
ChooseData.Items.Add(db.item(j).name);

Server:=NULL;
SQLServer:=NULL;
db:=NULL;
except


on E: Exception do
begin
MessageBox(Self.Handle, '请确定你输入的数据库参数是否正确! ', '系统提示 ', MB_ICONINFORMATION);
end;
end;
end;

procedure TfrmDataInit.SpeedButton2Click(Sender: TObject);
var
Reg: Tregistry;
begin
if (dxPickEdit1.Text= ' ') and (dxEdit1.Text= ' ') then Exit;
if ChooseData.Text= ' ' then
begin
MessageBox(Self.Handle, '请正确选择数据库! ', '百科软件 ',MB_ICONINFORMATION);
Exit;
end;

//写注册表;
Reg:=Tregistry.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
Reg.OpenKey( 'SOFTWARE\Bksoft\clglxt ',true);
Reg.WriteString( 'ip ',dxPickEdit1.Text);
Reg.WriteString( 'username ',jiami(dxEdit1.Text));
Reg.WriteString( 'password ',jiami(dxEdit2.Text));
Reg.WriteString( 'databasename ',jiami(ChooseData.Text));
Reg.WriteString( 'cinipreg ', 'sfjrwr '); //ly new
Reg.WriteString( 'cinip ', 'sfsjwjrj2r2 '); //ly new
Reg.WriteString( 'cinuseo ', 'hhwr24r24h '); //ly new

try
dmskh.ADOConnection1.Connected:=False;
dmskh.ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Password= '+dxEdit2.Text+ '; '
+ 'Persist Security Info=True;User ID= '+dxEdit1.Text+ '; '
+ 'Initial Catalog= '+ChooseData.Text+ ';Data Source= '+dxPickEdit1.Text+ '; '
+ 'Use Procedure for Prepare=1;Auto Translate=True; '
+ 'Packet Size=4096; '
+ 'Use Encryption for Data=False; '
+ 'Tag with column collation when possible=False ';
try
dmSkh.ADOConnection1.Connected:=True;
OK:=1;
MessageBox(Self.Handle, '数据据库设置成功,请重启新动本软件 ', '百科软件 ',MB_ICONINFORMATION);
Close;
// frmbkcl.Close;
except
OK:=0;
MessageBox(self.Handle, '数据据库设置不正确,请重新设置! ', '百科软件 ',MB_ICONINFORMATION);
end;
except
MessageBox(Self.Handle, '系统遇到未知错误,请重新启动本系统! ', '百科软件 ',MB_ICONINFORMATION);
end;
end;

procedure TfrmDataInit.FormShow(Sender: TObject);
begin
OK:=0;
end;

end.

[解决办法]
procedure Tfrmlogin.FormShow(Sender: TObject);
var
reg: TRegistry; //声明一个 regdit 类型变量
sip,spas,suse,sdan: string; //存放字符串变量
begin
reg:=TRegistry.Create;
reg.RootKey:=HKEY_LOCAL_MACHINE;
try
if reg.OpenKey( 'SOFTWARE\Bksoft\clglxt ',true) then
begin
sip:= reg.ReadString( 'ip '); //从注册表中读取对应字符串的值
spas:=reg.ReadString( 'password ');
suse:=reg.ReadString( 'username ');
sdan:=reg.ReadString( 'databasename ');
dmskh.IsMessage:=StrtoIntDef(reg.REadString( 'IsMessage '),0);
end;
finally
reg.CloseKey;
end;

if (suse = ' ') or (sdan = ' ') then
begin
MessageBox(self.Handle, '系统注册表中没有配置数据库连接参数,请重新配置! ', '百科软件 ',MB_ICONINFORMATION);
frmDataInit:=TfrmDataInit.Create(Self);
frmDataInit.ShowModal;
frmDataInit.Free;
frmbkcl.Close;
Exit;
end;

try


dmskh.ADOConnection1.Connected :=False;
dmskh.ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Password= '+jiemi(spas)+ '; '
+ 'Persist Security Info=True;User ID= '+jiemi(suse)+ '; '
+ 'Initial Catalog= '+jiemi(sdan)+ ';Data Source= '+sip+ '; '
+ 'Use Procedure for Prepare=1;Auto Translate=True; '
+ 'Packet Size=4096; '
+ 'Use Encryption for Data=False; '
+ 'Tag with column collation when possible=False ';

dmskh.ADOConnection1.Connected :=True;

dmSkh.adoLxrda.Open;
dmSkh.adoQyzl.Open;
except
dmSkh.Free;
MessageBox(self.Handle, '数据库参数设置错误,无法链接到指定数据库!请重新设置! ', '百科软件 ',MB_ICONINFORMATION);
frmDataInit:=TfrmDataInit.Create(Self);
frmDataInit.ShowModal;
frmDataInit.Free;
Application.Terminate;
end;
cxDlsj.Date :=Now;
LoadIni;
end;

读书人网 >.NET

热点推荐