在登陆窗口中连接了一个数据库,现在在另一窗口中想通过一按钮事件改变现在数据库的连接,连接到新的数据库中去,这个事件也成功了,可是当程序退出,再运行时,又会连接到原来那个数据库中,用什么办法能使重新登陆后连接到新的数据库呢?

解决方案 »

  1.   

    把数据库的连接的字符串保存起来,可以用INI 文件保存,,也可能保存到注册表,,然后下次运行时读取啊,,
      

  2.   

    你需要把与数据库连接的信息自己记到ini,或文本文件里,每次都都那里读连接信息,更改后同时也更改你的连接信息到ini或文本文件中adoconnection不会记你修改的信息的
      

  3.   

    procedure Tfrmmain.FormCreate(Sender: TObject);
    var
      Reg: TRegistry;
      ServerName:String; // [数据服务器名]
      LoginName:String;  // [登录用户名]
      LoginPW:String;    // [登录口令]
      iListCount:integer;
    begin
       Reg := TRegistry.Create;
        try
            Reg.RootKey := HKEY_CURRENT_USER;        //判断该注册表项是否存在
            if  (Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Ebang 进销存系统V1.0', false))=false then
            if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion', True) then
            begin
              //不存在 则新建注册表项
              Reg.CreateKey('Ebang 进销存系统V1.0');
              Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Ebang 进销存系统V1.0', True);
              Reg.WriteString('ServerName',''); //初始化 [数据服务器名] 项的值
              Reg.WriteString('LoginName','sa'); //初始化 [登录用户名] 项的值
              Reg.WriteString('LoginPW','');  //初始化 [登录口令] 项的值
              MessageBox(Handle,'你的数据库连接尚未设置好!请用本系统自带的数据库配置工具进行设置!','系统提示',32);
              application.Terminate;
            end;
              //读取 [数据服务器名] 项的值
              ServerName:=Trim(Reg.ReadString('ServerName'));
              //读取 [登录用户名] 项的值 
              LoginName:=Trim(Reg.ReadString('LoginName'));
              //读取 [登录口令] 项的值
              LoginPW:=Trim(Reg.ReadString('LoginPW'));
              Reg.CloseKey;
          finally
            inherited;
        end;
            Reg.Free;    try
                cdata.cconn.Connected:=False;
                cdata.cconn.ConnectionString:='Provider=SQLOLEDB.1;'+
                                                       'Persist Security Info=False;'+
                                                       'User ID='+Trim(LoginName)+
                                                       ';Password='+Trim(LoginPW)+
                                                       ';Initial Catalog='+'store'+
                                                       ';Data Source='+Trim(ServerName)+'';
                cdata.cconn.Connected:=True;
              //  ShowMessage('OK');
            except
                MessageBox(Handle,'数据库连接失败!请用本系统自带的数据库配置工具进行设置!','系统提示',32);
                application.Terminate;
                self.Free;
        end;
      

  4.   

    就是你的数据库的连接是静态的 所以每次打开程序的时候就自动的连接了原来的数据库的 把每次连接的数据库保存到ini是很好的建议的
      

  5.   

    问题是INI文件应该在哪个页面里创建呢,在事件窗口中的话,那么你登陆窗口一定要有一个默认连接的数据库,到时候怎么把这个去掉呢?不好去掉,重新运行程序后又是默认连接。
    用什么办法才能行呢?