如何将数据库配置文件写入注册表?并在每次运行软件时,判断数据库是否连接?数据库是sql2000...急...请给出代码做为参考.谢谢

解决方案 »

  1.   

    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;
      

  2.   

    写注册表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;implementationuses 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.
      

  3.   

    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;