再补充一下到时我开发的客户端要适应不同的服务器比如说我的SQL SERVER的数据库将来倒入另一个新的 SQL SERVER服务器中则IP变为了 192。168。0。5 ,计算机名也变了
那时在ADOCONNETION里的ConnectString 中设置的参数就无效了呀
所以我想知道的是如何动态的设置那些参数呢
比如我可以作一个登陆对话框,界面上就可以设置这些参数
但这些参数要涉及到哪些,如何写,我就不知道了,所以才发贴问问
希望大家在帮我解答一下!

解决方案 »

  1.   

    这个贴子我在DELPHI版中看过了,这还发呀!我回一个吧:需要有如下控件:
    ADOConnection
    ADOQuery
    DataSource
    DBGrid
    设置它们的属性:
    adoconnection1.loginprompt := false;
    adoconnection1.connectionstring //设置为你指定的SQL SERVER数据库
    adoquery1.connection:=adoconnection1;
    datasource1.dataset := adoquery1;
    dbgrid1.dataset := datasource1;
    adoquer1.active := true;//以上的所有属性都可以在DELPHI的属性栏中设置
    这就满足你的要求了!
      

  2.   

    你要设置动态参数是吧:这是我写的代码,给你参数一下吧:{这些代码写在你的项目的工程中,即用project->view source中看到的}
    function GetConnectionString: string;
    var
      SYSINI: TINIFile;
      ServerName, UserName, Password, tmpstr: string;
    begin
      SYSINI := TIniFile.Create(ExtractFilePath(Application.ExeName)+'DB.INI');
      try
        ServerName := SYSINI.ReadString('Database', 'ServerName', '');
        UserName := SYSINI.ReadString('Database', 'UserName', '');
        tmpstr := SYSINI.ReadString('Database', 'Password', '');
        Password := Decrypt(tmpstr, '');
        Result := '';
        Result := 'Provider=OraOLEDB.Oracle.1;Password=' + Password + ';Persist Security Info=True;User ID=' + UserName + ';Data Source='+ServerName+';Extended Properties=""';
      finally
        SYSINI.Free;
      end;
    end;function ConnectStrNull:Boolean;
    var
      SYSINI: TINIFile;
      tmpstr:String;
    begin
      Result:=  True;
      SYSINI := TIniFile.Create(ExtractFilePath(Application.ExeName)+'DB.INI');
      try
        tmpstr:= SYSINI.ReadString('Database', 'ServerName', '');
        if tmpstr ='' then
          exit;
        tmpstr:= SYSINI.ReadString('Database', 'UserName', '');
        if tmpstr ='' then
          exit;
        Result:=  False;
      finally
        SYSINI.Free;
      end;
    end;begin
      Application.Initialize;
      Application.Title := '生产管理系统';  if ConnectStrNull then
      begin
        InitForm:=  TInitForm.Create(Application);
        try
        if not InitForm.ShowModal = IDOK then
          exit;
        finally
          InitForm.Free;
          InitForm:=  nil;
        end;
      end
      else
      begin
        Application.CreateForm(TDataModule1, DataModule1);
      DataModule1.ADOConnection1.Connected:= false;
        try
          DataModule1.ADOConnection1.ConnectionString:= GetConnectionString;
          DataModule1.ADOConnection1.Connected:= true;
        except
          MessageBox(Application.Handle,'数据库初始化设置错误,请与系统管理员联系!','错误',MB_OK OR MB_ICONSTOP);
          Exit;
        end;
        Application.CreateForm(TMainform, Mainform);
        Application.Run;
      end;
    end.
      

  3.   

    还有一个更简便的方法是:在你的adoconnection的willconnection事件中调用这个函数:uses ADOConEd;adoconnection1.connectionstring := PromptDataSource(Application.handle,adoconnection1.connectionstring);
      

  4.   

    添加三个edit控件分别为对应"主机名:","用户名:","密码:"
    一个TADONonnection控件
    一个button,caption为"测试连接"双击它添加如下代码:procedure TForm1.Button1Click(Sender: TObject);
    var a,b,c,i:string;
    begin
    adoconnection1.connected:=false;
    ADOConnection1.ConnectionString:='';
    if trim(edit2.text)='' then
      begin
        ADOConnection1.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=True;User ID='+trim(edit1.text)+';Initial Catalog=ls;Data Source='+trim(edit3.text);
      end
    else
      begin
        ADOConnection1.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(edit2.text)+';Persist Security Info=True;User ID='+trim(edit1.text)+';Initial Catalog=ls;Data Source='+trim(edit3.text);
      end;
    ADOConnection1.loginprompt:=false;
    try
      with ADOconnection1 do
        begin
          connected:=true;
          showmessage('连接成功!') ;
        end;
    except
      raise  tmouseexception.create('错误!连接失败!')
    end;
    end;