使用ADO连接不用在打包时设定,只要在程序中构造好ConntionString即可。

解决方案 »

  1.   

    請參考以下代碼:
    我上次在这里也问了这个问题,并得到了大家的帮助,找到答案。
    现贴给你参考:unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Db, ADODB, StdCtrls;type
      TForm1 = class(TForm)
        Label1: TLabel;
        Label2: TLabel;
        Edit1: TEdit;
        Label4: TLabel;
        Edit2: TEdit;
        ADOConnection1: TADOConnection;
        ADOQuery1: TADOQuery;
        Button1: TButton;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    var
      Connectstring:string;
    begin
      Connectstring:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID='+Edit1.Text +
      ';Initial Catalog=master;Data Source='+Edit2.Text;
      ADOConnection1.ConnectionString :=Connectstring;
      ADOConnection1.Connected :=True;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      NewSql,LogAddress,DataBaseAddress:String;
      i:integer;
    const
      DataBaseName='dlxt.mdf';
      DataLogName='dlxt_log.ldf';begin
    DataBaseAddress := ExtractFilePath(Paramstr(0))+DataBaseName;
    LogAddress := ExtractFilePath(Paramstr(0))+DataLogName;
    //ShowMessage(DataBaseAddress);
    //ShowMessage(LogAddress);
     NewSql:='EXEC sp_attach_db @dbname = N''dlxt'','+//这句是关键
    '   @filename1 = N'''+DataBaseAddress+''','+
    '   @filename2 = N'''+LogAddress+'''';
    //ShowMessage(NewSql);
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear ;
    ADOQuery1.Sql.Add(NewSql);
    i:=ADOQuery1.ExecSQL ;
    if i=-1 then
      Application.MessageBox('成功建立数据库!','恭喜!',MB_OK+MB_ICONINFORMATION);
    end;end.