请问哪路英雄能帮我解决以下问题:软件第一次运行需要指定后台数据库的连接服务器名、数据库名、用户名,第二次以后就不需要在指定了,直到改变后台服务器名称为止

解决方案 »

  1.   

    这样做不是很好应该是指定到DSN,这样更方便管理如果你要指定DSN的话,我再给你代码
      

  2.   

    第一次写到注册表或者 INI文件里面呗 每次都从这里读 不能连接再让用户手动修改连接字
      

  3.   

    西周生:能不能告诉我具体怎么实现,ini我不是很懂,但是我看到被人用过,感觉很方便,请赐教,不胜感激,我
      

  4.   

    我是用INI文件实现的。根据不同的用户,直接修改INI文件的参数就行了。 
     INI文件内容如下:
      [Database]
       Provider=SQLOLEDB.1
       Password=ldt2001
       Persist Security Info=True
       User ID=sa
       Initial Catalog=SomeOneWatch_DB
       Data Source=YF
      
      然后在程序中写一个读取函数
      Function TDataModule1.ReadLoginParams():String;
    Var  fileName:String;
         systeminifile:Tinifile;
    begin
      Result:='';
      Filename:=extractfilepath(paramstr(0))+'Setup.ini';
      systeminifile:=tinifile.Create(filename);
      try
       Result:=Result+'Provider='+Systeminifile.ReadString('Database','Provider','')+';';
       Result:=Result+'Password='+Systeminifile.ReadString('Database','Password','')+';';
       Result:=Result+'Persist Security Info='+Systeminifile.ReadString('Database','Persist Security Info','')+';';
       Result:=Result+'User ID='+Systeminifile.ReadString('Database','User ID','')+';';
       Result:=Result+'Initial Catalog='+Systeminifile.ReadString('Database','Initial Catalog','')+';';
       Result:=Result+'Data Source='+Systeminifile.ReadString('Database','Data Source','');
      Finally
       Systeminifile.Destroy;
      End;
    End;最后在ADOConnection的ONLogin事件中写入
     procedure TDataModule1.ADOConnection1Login(Sender: TObject; Username,
      Password: String);
    begin
     AdoConnection1.ConnectionString:=ReadLoginParams();
    end;希望对你有帮助。
      

  5.   

    cn := TADOConnection.Create(nil);
      cn.ConnectionString :=
      'Provider=SQLOLEDB.1;Password=ly_dragonsoft;Persist Security Info=True;User '+
      'ID=sqldba;Data Source=server;Use Procedure for Prepare=1;Auto Translate=True;'+
      'Packet Size=4096;Workstation ID=LY2001002';
      cn.DefaultDatabase  := GetCurrentDatabaseName ;
      cn.KeepConnection := true;
      cn.ConnectionTimeout := 5;
      cn.LoginPrompt := False;