你可以先配置一个可以使用的connectionstring,然后将其中的关键信息
存放在ini文件或注册表中,用的时候提取。以下是我写的一段代码,你可以参考修改,使之适用.
GOOD LUCK//读入配置
  ISNTLOGIN:=False;
  myrg:=tregistry.Create;
  myrg.RootKey :=HKEY_LOCAL_MACHINE;
  if not myrg.KeyExists('software\SQLDbTk') Then
      Begin
         myrg.OpenKey('software\SQLDbTk',true);
         myrg.WriteString('Server','ITEMSERVER');
         myrg.closekey;         myrg.OpenKey('software\SQLDbTk',true);
         myrg.WriteBool('IsNTLogin',False);
         myrg.closekey;         myrg.OpenKey('software\SQLDbTk',true);
         myrg.WriteString('UserID','sa');
         myrg.closekey;         myrg.OpenKey('software\SQLDbTk',true);
         myrg.WriteString('PassWord','sa');
         myrg.closekey;         application.createform(TLoginForm, LoginForm);
         LoginForm.showmodal;
         LoginForm.release;
      end
  else
    begin
         myrg.OpenKey('software\SQLDbTk',true);
         SQLServerName:=myrg.readString('Server');
         myrg.closekey;         myrg.OpenKey('software\SQLDbTk',true);
         if myrg.ReadBool('IsNTLogin') then  ISNTLOGIN:=true else ISNTLOGIN:=false;
         myrg.closekey;         myrg.OpenKey('software\SQLDbTk',true);
         ServerUserID:=myrg.readString('UserID');
         myrg.closekey;         myrg.OpenKey('software\SQLDbTk',true);
         ServerPassWord:=myrg.readString('PassWord');
         myrg.closekey;    end;
  myrg.Free;//连接SERVER
ISADOConnection:=False;
DataModule1.ADOConnection1.Connected:=False;
if ISNTLOGIN then DataModule1.ADOConnection1.ConnectionString:='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=TKSQLDB;Data Source='+SQLServerName
else DataModule1.ADOConnection1.ConnectionString:='Provider=SQLOLEDB.1;Password='+ServerPassWord+';Persist Security Info=True;User ID='+ServerUserID+';Initial Catalog=TKSQLDB;Data Source='+SQLServerName;//+';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=JZNSERVER;Use Encryption for Data=False;Tag with column collation when possible=False';
  try
   DataModule1.ADOConnection1.Connected:=True;
   ISADOConnection:=True;
  except
   ISADOConnection:=False;
   showmessage('数据库服务器登录错误!,请按“服务器登录设置”按钮进行正确设置。');
   exit;
  end;

解决方案 »

  1.   

    你可以先配置一个可以使用的connectionstring,然后将其中的关键信息
    存放在ini文件或注册表中,用的时候提取。以下是我写的一段代码,你可以参考修改,使之适用.
    GOOD LUCK//读入配置
      ISNTLOGIN:=False;
      myrg:=tregistry.Create;
      myrg.RootKey :=HKEY_LOCAL_MACHINE;
      if not myrg.KeyExists('software\SQLDbTk') Then
          Begin
             myrg.OpenKey('software\SQLDbTk',true);
             myrg.WriteString('Server','ITEMSERVER');
             myrg.closekey;         myrg.OpenKey('software\SQLDbTk',true);
             myrg.WriteBool('IsNTLogin',False);
             myrg.closekey;         myrg.OpenKey('software\SQLDbTk',true);
             myrg.WriteString('UserID','sa');
             myrg.closekey;         myrg.OpenKey('software\SQLDbTk',true);
             myrg.WriteString('PassWord','sa');
             myrg.closekey;         application.createform(TLoginForm, LoginForm);
             LoginForm.showmodal;
             LoginForm.release;
          end
      else
        begin
             myrg.OpenKey('software\SQLDbTk',true);
             SQLServerName:=myrg.readString('Server');
             myrg.closekey;         myrg.OpenKey('software\SQLDbTk',true);
             if myrg.ReadBool('IsNTLogin') then  ISNTLOGIN:=true else ISNTLOGIN:=false;
             myrg.closekey;         myrg.OpenKey('software\SQLDbTk',true);
             ServerUserID:=myrg.readString('UserID');
             myrg.closekey;         myrg.OpenKey('software\SQLDbTk',true);
             ServerPassWord:=myrg.readString('PassWord');
             myrg.closekey;    end;
      myrg.Free;//连接SERVER
    ISADOConnection:=False;
    DataModule1.ADOConnection1.Connected:=False;
    if ISNTLOGIN then DataModule1.ADOConnection1.ConnectionString:='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=TKSQLDB;Data Source='+SQLServerName
    else DataModule1.ADOConnection1.ConnectionString:='Provider=SQLOLEDB.1;Password='+ServerPassWord+';Persist Security Info=True;User ID='+ServerUserID+';Initial Catalog=TKSQLDB;Data Source='+SQLServerName;//+';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=JZNSERVER;Use Encryption for Data=False;Tag with column collation when possible=False';
      try
       DataModule1.ADOConnection1.Connected:=True;
       ISADOConnection:=True;
      except
       ISADOConnection:=False;
       showmessage('数据库服务器登录错误!,请按“服务器登录设置”按钮进行正确设置。');
       exit;
      end;