Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как мне в delphi запустить импорт базы данних [D7, MySQL]


cchiko ©   (2009-01-25 23:34:00) 

Как мне в delphi запустить импорт базы данних.

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

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


Anatoly Podgoretsky   (2009-01-26 13:11:00) [1]

Что бы не закрывалось - требуется запуска в консоли коммандного процессора.
С определенными допущениями это 'cmd ' + Filename
Параметры 'cmd можно посмотреть в справке


cchiko   (2009-01-26 13:02:00) [2]


> 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. Спасибо за исправления ошибок, русский у меня хромает, просьба, если будут еще какие то ошибки, сообщим мне об этом.


Германн   (2009-01-26 02:47:00) [3]


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

Голливуд идёт лесом. Святым или или ещё каким - это мне не интересно.
:)
CreateProcess


KilkennyCat   (2009-01-26 02:40:00) [4]

Коммандос - с двумя :)

WinExec


Германн   (2009-01-26 02:11:00) [5]


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

А причём тут конференция "Базы", если вопрос о том "Как мне запустить на выполнение такую строчку дос комманды?"
P.S.
Команда пишется с одной "м".


Наверх

Титульная страница Поиск, карта сайта Написать письмо