Конференция "Начинающим" » Как мне в delphi запустить импорт базы данних [D7, MySQL]
 
  • cchiko (25.01.09 23:34) [0]
    Как мне в delphi запустить импорт базы данних.

    Обычно я делаю так
    C:\Program Files\MySQL\MySQL Server 5.0\bin\mysql.exe --user=root < с:\db.sql

    Как мне запустить на выполнение такую строчку дос комманды?
  • Германн © (26.01.09 02:11) [1]

    > Как мне запустить на выполнение такую строчку дос комманды?

    А причём тут конференция "Базы", если вопрос о том "Как мне запустить на выполнение такую строчку дос комманды?"
    P.S.
    Команда пишется с одной "м".
  • KilkennyCat © (26.01.09 02:40) [2]
    Коммандос - с двумя :)

    WinExec
  • Германн © (26.01.09 02:47) [3]

    > KilkennyCat ©   (26.01.09 02:40) [2]
    >
    > Коммандос - с двумя :)
    >

    Голливуд идёт лесом. Святым или или ещё каким - это мне не интересно.
    :)
    CreateProcess
  • cchiko (26.01.09 13:02) [4]

    > CreateProcess


    Я использую CreateProcess но ничего не выходит, окно открывается и сразу закрывается, я даже не могу рассмотреть что там за ошибка, но вроди как ошибка в команде, потому что, чтото похожее выдает mysql.exe когда не верно введена команда - справку с описанием всевозможных параметров. КОгда я делаю это вручную все зрабатывает нормально.
    Привожу исходный код:

    function ExecAndWait(const FileName, Params: ShortString; const WinState: Word;): boolean; export;
    var
     StartInfo: TStartupInfo;
     ProcInfo: TProcessInformation;
     CmdLine: ShortString;
    begin
     CmdLine := '"' + Filename + '" ' + Params;
     FillChar(StartInfo, SizeOf(StartInfo), #0);
     with StartInfo do
     begin
       cb := SizeOf(StartInfo);
       dwFlags := STARTF_USESHOWWINDOW;
       wShowWindow := WinState;
     end;
     Result := CreateProcess(nil, PChar( String( CmdLine ) ), nil, nil, false,
                             CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil,
                             PChar(ExtractFilePath(Filename)),StartInfo,ProcInfo);
     if Result then
     begin
       WaitForSingleObject(ProcInfo.hProcess, INFINITE);
       CloseHandle(ProcInfo.hProcess);
       CloseHandle(ProcInfo.hThread);
     end
     else
     begin
        ShowMessage("Error");
     end;
    end;

    Вызов этой функции происходит так:
    ExecAndWait('C:\Program Files\MySQL\MySQL Server 5.0\bin\mysql.exe',' --user=root < ' + ExtractFilePath(Application.ExeName) + 'db_dump.sql',sw_ShowNormal);

    P.S. Спасибо за исправления ошибок, русский у меня хромает, просьба, если будут еще какие то ошибки, сообщим мне об этом.
  • Anatoly Podgoretsky © (26.01.09 13:11) [5]
    Что бы не закрывалось - требуется запуска в консоли коммандного процессора.
    С определенными допущениями это 'cmd ' + Filename
    Параметры 'cmd можно посмотреть в справке
 
Конференция "Начинающим" » Как мне в delphi запустить импорт базы данних [D7, MySQL]
Есть новые Нет новых   [134478   +44][b:0][p:0]