我想用delphi连接sql server数据库,但是连好之后如果路径一变程序就不能运行了,我想让他无论移到什么路径下都可以运行!请问怎样修改conntionstring!
急等回复!!!!

解决方案 »

  1.   

    Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=master;Data Source=DEV021DEV021 是服务器的名称
      

  2.   

    把connectionstring写进INI里,每次程序开始时读出来,实现动态连接!
      

  3.   

    以下是我写的一个读写INI文件的程序,你可以看看!unit MainForm;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, IniFiles, DB, ADODB;type
      TINI_MainFrm = class(TForm)
        Label1: TLabel;
        edtDataSource: TEdit;
        Label2: TLabel;
        edtDataBase: TEdit;
        Label3: TLabel;
        edtUserID: TEdit;
        Label4: TLabel;
        edtPassWord: TEdit;
        GroupBox1: TGroupBox;
        btnok: TButton;
        btncancel: TButton;
        btnconn: TButton;
        ADOConn: TADOConnection;
        procedure btnokClick(Sender: TObject);
        procedure btncancelClick(Sender: TObject);
        procedure btnconnClick(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        procedure WMNCPaint(var Msg : TWMNCPaint); message WM_NCPAINT;
        { Private declarations }
      public
        { Public declarations }
      end;var
      INI_MainFrm: TINI_MainFrm;
      ini : TIniFile;
    implementationuses ShareU;
    {$R *.dfm}procedure TINI_MainFrm.WMNCPaint(var Msg : TWMNCPaint);
    begin
      inherited;
      draw(INI_MainFrm);
    end;procedure TINI_MainFrm.btnokClick(Sender: TObject);
    begin
      try
        //打开INI文件,如果不存在则创建与应用程序同名,后缀名为.INI的ini配置文件
        //Ini := TIniFile.Create(ChangeFileExt(Application.ExeName,'.INI'));    ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'dblink.INI'); //获取应用程序路径下的ini文件
        ini.WriteString('DBLink','Data Source',edtDataSource.Text);      //将数据库服务器名写入配置文件
        ini.WriteString('DBLink','Initial Catalog',edtDataBase.Text);   //将数据库名写入配置文件
        ini.WriteString('DBLink','User ID',edtUserID.Text);            //将登录数据库的用户名写入配置文件
        ini.WriteString('DBLink','Password',edtPassWord.Text);        //将登录数据库的口令写入配置文件    MessageBox(Handle,'配置参数写入成功!','信息!',MB_OK + MB_ICONINFORMATION);
        //Close; 关闭数据库服务器配置窗口
      finally
        ini.Free;
      end;
    end;procedure TINI_MainFrm.btncancelClick(Sender: TObject);
    begin
      Application.Terminate;
    end;procedure TINI_MainFrm.btnconnClick(Sender: TObject);
    var
      DBConn : string;        //保存测试连接字符串
      DataSource : string;   //保存服务器名
      DataBase : string;    //保存数据库名
      User : string;       //保存用户名
      PassWord : string;  //保存口令
    begin
      ini := TInifile.Create(ExtractFilePath(application.ExeName)+'dblink.INI'); //获取应用程序路径下的ini文件  try
        DataSource := ini.ReadString('dblink','DataSource','');      //从INI文件读取服务器名
        DataBase := ini.ReadString('dblink','Initial Catalog','');  //从INI文件读取数据库名
        User := ini.ReadString('dblink','User ID','');             //从INI文件读取用户名
        PassWord := ini.ReadString('dblink','PassWord','');       //从INI文件读取口令
      finally
        ini.Free;
      end;  DBConn := 'Provider=SQLOLEDB.1;Password='+PassWord+';Persist Security Info=True;User ID='+User+';Initial Catalog='+DataBase+';Data Source='+DataSource+'';
      ADOConn.Connected := false;
      ADOConn.ConnectionString := DBConn;  try
        ADOConn.Connected := true;
        MessageBox(Handle,'数据库连接成功!','信息!',MB_OK + MB_ICONINFORMATION);
      except
        on E : Exception do
          begin
            MessageBox(Handle,'网络故障!请配置网络连接!','错误信息!',MB_OK + MB_ICONERROR);
            Exit;
          end;
      end;
    end;procedure TINI_MainFrm.FormCreate(Sender: TObject);
    begin
      ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'dblink.INI');  //获取应用程序路径下的ini文件
      try
        edtDataBase.Text := ini.ReadString('dblink','Initial Catalog',''); //从INI文件读取服务器名
        edtDataSource.Text := ini.ReadString('dblink','Data Source','');  //从INI文件读取数据库名
        edtUserID.Text := ini.ReadString('dblink','User ID','');         //从INI文件读取用户名
        edtPassWord.Text := ini.ReadString('dblink','PassWord','');     //从INI文件读取口令
      finally
        ini.Free;
      end;
    end;end.