请教各位高手,用Dephi开发的程序,通过InstallShield 6.22制作安装包时,如何将MSSQL数据库自动创建到MSSQL中……??请问是不是在InstallShield 6.22中如何处理,是不是要写SQL脚本,还是直接还原数据库……???谢谢

解决方案 »

  1.   

    有数据库文件可以这样:
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
    var
      S:String;
    begin
      s:='EXEC sp_attach_db @dbname = N'+char(39)+'数据库名'+char(39)+','+
            '@filename1 = N'+char(39)+ExtractFilePath(paramstr(0))+'文件名_Data.MDF'+char(39)+
              ','+'@filename2 = N'+char(39)+ExtractFilePath(paramstr(0))+'文件名_Log.LDF'+char(39);
      ADOCommand.CommandText := s;
      ADOCommand.Execute();
      Messagebox(handle,'数据库安装成功!','提醒',MB_OK+MB_ICONINFORMATION);
    end;
      

  2.   

    谢谢 杰克.逊 兄,是不是在InstallShield中写入你所说的代吗?
      

  3.   

    Dlphei中是可以这样写入,但是通过InstallShield安装时如何自动建立数据库呢?谢谢!
      

  4.   

    我试过在初始化中用你说的那些代码了,可是只能创建一个空的无名数据库,不知为什么,还是上面的问题,加上一个条件,客户机器上安装了SQLSERVER,我们也已经编辑好一个数据库文件名为Data1_data,我该怎么半?
      

  5.   

    用delphi写一个程序,就用上面的代码,然后在IS内设置这个程序为安装拷贝文件完成后执行
      

  6.   

    InstallShield注册了吗?
    如果没有,建议自己动手做安装程序,要什么样的就有什么样的,HOHO
    多动动手有好处!
      

  7.   

    IS有一个功能,你可以启动外程序,那你就可以在拷贝完所有文件后运行你写的程序来执行附加操作,到于数据库文件和路径问题,你可以用参数的方式传给你的程序,而具体路径在IS内你是可以得到的。
      

  8.   

    InstallShield中这样用应该可以//////////////////////////
    // 创建和优化数据库
    //////////////////////////
    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;