MYSQL做的数据库在用户机子上,必须导入数据库才可顺利执行,.SQL文件我已导出,INNO  SETUP能实现在安装过程中个自动将打包中的.SQL文件导入MYSQL数据库吗?怎么实现???多谢各路高手指教!!!!!小弟不胜感激赐教!!!!

解决方案 »

  1.   

    你可以将导入数据的这个功能写到一个小程序里,然后INNO SETUP安装过程中,来运行这个程序
      

  2.   

    参考之:
    1.可将导入数据的功能写入一个小程序,再外部调用(楼上已经说了);
    2.可用程序代码:[Setup] 
    AppName=科發醫院管理系統 
    AppVerName=科發醫院管理系統4.0 
    AppPublisher=廣州科發科技有限公司 
    AppPublisherURL=http://www.kf200.com 
    AppSupportURL=http://www.kf200.com 
    AppUpdatesURL=http://www.kf200.com 
    DefaultDirName={pf}\科發醫院資訊管理系統 
    DefaultGroupName=科發醫院管理系統 
    ;LicenseFile=.\Soruce\Program\Yygl\使用者授權合約.txt 
    Comdivssion=bzip 
    SolidComdivssion=no [Types] 
    Name: "full"; Description: "完整安裝" 
    Name: "custom"; Description: "自訂安裝"; Flags: iscustom [Components] 
    Name: "program"; Description: "全部程式"; Types: Custom 
    ;Name: "Program\His"; Description: "醫院執行資訊系統"; Types: full 
    ;//Custom 
    ;//Name: "program\ClientSet"; Description: "用戶端"; Types: full 
    Name: "program\Kfpt"; Description: "二次開發平臺"; Types: Custom 
    ;Name: "program\Czsc"; Description: "操作手冊"; Types: Custom 
    ;//full Custom 
    Name: "program\ServerApp"; Description: "後臺服務控制器"; Types: Custom 
    Name: "readme"; Description: "讀我檔案"; Types: full 
    [Tasks] 
    ; 注意: 下面的條目包含一個中文用語 (“創建桌面快捷方式”和“添加快捷方式”)。如果需要你可以翻譯為其它語言。 
    Name: "desktopicon"; Description: "創建桌面快捷方式"; GroupDescription: "添加快捷方式:"; Flags: unchecked 
    ;//unchecked [Files] 
    Source: ".\Soruce\Program\kfpt\*"; DestDir: "{app}"; components :program\kfpt ;Flags: ignoreversion recursesubdirs 
    Source: ".\Soruce\Program\ServerApp\*"; DestDir: "{app}"; components :program\ServerApp ;Flags: ignoreversion recursesubdirs 
    Source: ".\Soruce\Data\*.*"; DestDir: "{drive:{app}}\Data" ; 注意: 不要在任何共用系統檔中使用“Flags: ignoreversion” [Icons] 
    Name: "{group}\後臺服務控制器"; Filename: "{app}\ServerApp.exe" ;WorkingDir: "{app}" ;components :program\ServerApp 
    Name: "{group}\二次開發平臺"; Filename: "{app}\KfPt.exe" ;WorkingDir: "{app}" ;components :program\kfpt 
    ; 注意: 下面的條目包含一個中文用語 (“卸載”)。如果需要你可以翻譯為其它語言。 
    Name: "{group}\卸載 科發醫院管理系統"; Filename: "{uninstallexe}" [Run] 
    ; 注意: 下列條目包含一個中文用語 (“運行”)。如果需要你可以翻譯為其它語言。 [Code] {--- SQLDMO ---} const 
    SQLServerName = '(local)'; 
    SQLDMOGrowth_MB = 0; procedure InstallDb(); 
    var 
    SQLServer, Database, DBFile, LogFile: Variant; 
    IDColumn, NameColumn, Table: Variant; 
    FlagDbExist:Boolean; 
    FileName1, Filename2,DbName,DbPath:String; begin 
    //;if MsgBox('安裝程式現在將通過一個可信任的連接到 Microsoft SQL 伺服器 ''' + SQLServerName + ''' 並創建一個資料庫。你想繼續嗎?', mbInformation, mb_YesNo) = idNo then 
    // Exit; { 創建主 SQLDMO COM 自動操作物件 } try 
    SQLServer := CreateOleObject('SQLDMO.SQLServer'); 
    except 
    RaiseException('未安裝資料庫伺服器,先請安裝 Microsoft SQL Server 伺服器。'#13#13'(Error ''' + GetExceptionMessage + ''' occurred)'); 
    exit; 
    end; { 連接到 Microsoft SQL 伺服器 } 
    DbName:='KfHis_std_a'; 
    //私營版 SQLServer.LoginSecure := True; 
    SQLServer.Connect(SQLServerName); //MsgBox('已連接到 Microsoft SQL 伺服器 ''' + SQLServerName + '''.', mbInformation, mb_Ok); { 安裝資料庫 } 
    FlagDbExist:=True; 
    Database := CreateOleObject('SQLDMO.Database'); 
    try 
    Database := SQLServer.Databases.Item(DbName); 
    except FlagDbExist:=False; 
    end; 
    if FlagDbExist=False then else 
    exit; {資料庫已安裝} FileName1:= ExpandConstant('{drive:{app}}\Data')+'\KFHIS.mdf'; 
    Filename2:= ExpandConstant('{drive:{app}}\Data')+'\KFHIS_log.ldf'; 
    {附加資料庫} 
    dbPath:= FileName1+' , '+Filename2; 
    try 
    SQLServer.AttachDB(DBName, dbPath); 
    except 
    MsgBox('資料庫安裝失敗!', mbInformation, mb_Ok); 
    exit; 
    end; 
    MsgBox('資料庫安裝成功!', mbInformation, mb_Ok); 
    end; function InitializeSetup(): Boolean; 
    begin 
    { MsgBox('aa', mbInformation, mb_Ok); } 
    Result:=True; 
    end; function NextButtonClick(CurPageID: Integer): Boolean; 
    begin 
    { if CurPageID=wpInfoAfter then 
    begin 
    MsgBox('pageid'+inttostr(CurPageID),mbInformation, mb_Ok); 
    InstallDb(); 
    end; } 
    Result:=True; 
    end; procedure CurStepChanged(CurStep: TSetupStep); 
    begin 
    if CurStep=ssPostInstall then 
    begin 
    InstallDb(); 
    CreateDir(ExpandConstant('{app}\Datalink')); 
    FileCopy(ExpandConstant('{app}\DefLink.udl'),ExpandConstant('{app}\Datalink\DefLink.udl'),True); end; 
    end;
      

  3.   

    MySql导入应该有命令工具吧?安装过程中执行导入脚本应该可以吧?
      

  4.   

    一楼,二楼的的朋友非常感谢,但是说实话小弟刚刚接触pascal语言,看不太懂,这个是写在INNO  SETUP里的嘛?有没有可界面化操作的方法,语言小弟还是倍感吃力啊!!多谢多谢!!!
      

  5.   

    三楼说的我知道,MYSQL是有导入语句的,但是那个语言可以在转化写在INNO SETUP里嘛??我不是很清楚,呵呵
      

  6.   

    INNO SETUP不是可以写Pascal代码吗?那就可以执行脚本啊什么的,做一个.Bat文件来执行最好
      

  7.   

    请问七楼,那个BAT文件语句该怎么写?我研究了下,他总是要先建立一个数据库再导入,我用MYSQL导入语句在BAT中不能执行的。能给个语句吗??谢谢我的*.sql文件路径是E:\新建文件夹\
      

  8.   

    MySql我也不熟悉,你百度下mysql 导入导出,把那些用到的命令做成一个批处理文件就行了,我想像批处理文件应该是这样:Mysql连接登陆命令
    数据导入命令.Bat文件也就是批处理文件就是顺序执行下来呀。
      

  9.   

    但问题是这个小程序怎么写??用什么写?根据九楼朋友的建议,我在尝试BAT文件,发现不行诶,可能是我语句不对,我是在记事本里写:
    mysql -h localhost -u root -paaa
    mysql>create database huiyuan
    mysql>use huiyuan 
    mysql>source e:huiyuan.sql 
    希望实现自动连接登陆mysql,并且创建数据库,然后导入.SQL文件
    但这个代码是不对的,我测试过了。目前我刚接触这种软件代码的事情,还是个小白,事情现在又比较赶,希望高手前辈们能多帮帮忙。!!!多谢多谢
      

  10.   


    mysql>不应该有
    mysql -h localhost -u root -paaa
    create database huiyuan//直接是命令就好,
    use huiyuan 
    source e:huiyuan.sql//这一句感觉不对,这样可以导入?