怎么动态创建一个连接(服务器名:Server;用户名:Guest;密码:Pass)?

解决方案 »

  1.   

    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=MSDAORA.1;Password=' + Password + ';Persist Security Info=True;User ID=' + UserName + ';Data Source='+ServerName+';Extended Properties=""';
        Result := 'Provider=OraOLEDB.Oracle.1;Password=' + Password + ';Persist Security Info=True;User ID=' + UserName + ';Data Source='+ServerName+';Extended Properties=""';  finally
        SYSINI.Free;
      end;
    end;使用上面的函数:DataModule1.ADOConnection1.ConnectionString:= GetConnectionString;我用的是ORACLE的数据库
      

  2.   

    如果要把一个Connection对象连到另外一个上应该怎么写?例如:Conn2 和 Conn1 相等 ,好象写 Conn2 := Conn1 不对啊
      

  3.   

    procedure ReadFromIni(var aServerName, aDatabaseName, aUserName, aPassword: string);
    var
      IniFile: TIniFile;
      FileName: string;
    begin
      FileName := ExtractFilePath(application.ExeName) + '\DB.ini';
      IniFile := TIniFile.Create(FileName);
      aServerName := IniFile.ReadString('DB', 'ServerName', '');
      aDatabaseName := IniFile.ReadString('DB', 'DatabaseName', '');
      aUserName := IniFile.ReadString('DB', 'UserName', '');
      aPassword := IniFile.ReadString('DB', 'Password', '');
      IniFile.Free;
    end;
    ..
    //判断能否连接上数据库的函数
    function TfrmMain.DBConnect(aServerName, aDatabaseName, aUserName, aPassword: string): boolean;
    begin
      Result := True;
      Database.connected := False;
      Database.DriverName := 'SQL server'; //驱动名称
      Database.Params.Values['Server Name'] := aServerName; //服务器名
      Database.Params.Values['Database Name'] := aDatabaseName; //数据库名
      Database.Params.Values['User Name'] := aUserName;//登录数据库用户名
      Database.Params.Values['Password'] := aPassword; //相应数据库用户的密码
      try
        Database.Connected := True;
      except
        result := False;
      end;
    end;
    ....
    DB.ini内容如下
    [DB]
    ServerName=king
    DatabaseName=wzgl
    UserName=sa
    Password=
    ...另一段代码
    //写入ini,并测试是否连接上
    procedure TfrmDBConnect.btnOKClick(Sender: TObject);
    begin
      writeToIni(edtServerName.Text, edtDatabaseName.Text, edtUserName.Text, edtPassword.Text);
      if frmMain.DBConnect(edtServerName.Text, edtDatabaseName.Text, edtUserName.Text, edtPassword.Text) then
      begin
        Application.MessageBox('连接成功', '提示', mb_iconInformation + mb_defbutton1);
        Connected := True;
        Close;
      end
      else
      begin
        Application.MessageBox('连接失败', '提示', mb_iconInformation + mb_defbutton1);
      end;
    end;
    刚才抄的!