我用DELPHI6写了一个小东西,后台数据库是SQL SERVER2000,现在用installshield6.22做安装程序,想让安装程序附带上SQL SERVER的数据库文件,然后由安装程序自动注册附加数据库。请高手指点我该怎么做?
一百分够不够?不够再加?

解决方案 »

  1.   

    你可以用SQL语句实现,你可以写一个SQL文件然后执行它即可。
      

  2.   

    写一个SQL文件,在安装好软件后,由软件自己执行
      

  3.   

    ////////////////////////// 
    // 创建和优化数据库 
    ////////////////////////// 
    function CreateDataBase(svSQLsvr,svSQLusr,svSQLpwd) 
    STRING szCmdLine,szWaitTxt; 
    begin 
    szWaitTxt=" 正在创建"+@PRODUCT_NAME+"所需数据库...."; 
    SdShowMsg (szWaitTxt, TRUE); 
    Delay(2); 
    szCmdLine = "/U "+svSQLusr+" /P "+svSQLpwd+" /S "+svSQLsvr+" /Q \"exec sp_attach_db N'OASystem' , N'"+SUPPORTDIR ^"OASystem_data.mdf'\""; 
    if (LaunchAppAndWait("osql.exe", szCmdLine,WAIT) < 0) then 
    MessageBox ("数据库创建失败!请确您的系统中已安装 Microsoft SQL Server 2000.\n如仍无法解决,请联系系统供应商!",SEVERE); 
    endif; 
    SdShowMsg (szWaitTxt, FALSE); 
    szWaitTxt=" 正在优化"+@PRODUCT_NAME+"系统数据库...."; 
    SdShowMsg (szWaitTxt, TRUE); 
    Delay(2); 
    szCmdLine = "/U "+svSQLusr+" /P "+svSQLpwd+" /S "+svSQLsvr+" /Q \"use OASystem ; exec sp_updatestats\""; 
    if (LaunchAppAndWait("osql.exe", szCmdLine,WAIT) < 0) then 
    MessageBox ("数据库优化失败!您可以在 sql查询分析器中执行 \n use OASystem ; exec sp_updatestats \n完成!",SEVERE); 
    endif; 
    SdShowMsg (szWaitTxt, FALSE); 
    return 0; 
    end; 
      

  4.   

    用一个ADOConnection连接到master数据库,执行存储过程sp_attach_db,将数据库附加上去
    procedure TFormSetupWizard.CreateDB;
    var
      CreateDBString: string;
    begin
      CreateDBString := 'sp_attach_db ' + #39 + 'dbName' + #39 + ',' + #39 +
        PathWithSlash(ExtractFilePath(Application.ExeName)) + 'dbName.mdf' + #39;
      try
        adcMaster.Execute(CreateDBString);
      except
        WarnBox('数据库设定错误' + #13#10 + CreateDBString);
        raise;
      end;
    end;
      

  5.   

    PathWithSlash是我的一个自定义函数,确保路径以'\'结束;
      

  6.   

    你也可以用批处理执行SQL文件方法如下:新建一个批处理文件xxx.bat,内容为:isql -U sa -P -i ***.sql***.sql为你所写SQL文件,然后执行xxx.bat即可。