| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > асинхронное соединение с MySQL |
| Автор: nomadminded 10.1.2007, 12:50 |
| доброго времени суток. помогите пожалуйста, никак не могу разобраться. пробую установить асинхронное соединение с MySQL из delphi через ADODB библиотеку (ADOConnection.ConnectOptions:=coAsyncConnect; ADOCommand1.ExecuteOptions:=[eoAsyncExecute];) посылаю на сервер большой SQL (INSERT) с помощью ADOCommand.Execute и продолжаю работать, пока он там выполняется. как мне узнать, что он закончил выполнение? каким образом можно это проверить? спасибо заранее. |
| Автор: Mephisto 10.1.2007, 13:09 |
| А у тебя блокирутся таблица для чтения при вставке? Если нет, то думаю, никак. |
| Автор: drkot 10.1.2007, 13:14 |
| можно попробовать запросить запись по ключевому полю через тот же command. Если запись есть то запрос соответственно завершился. Есть еще такое понятие как список транзакций на сервере, по ним наверно можно. Но я с таким не работал. |
| Автор: SergeBS 10.1.2007, 15:04 |
| Mephisto, drkot, ну что вы, право... nomadminded, ADOCommand - F1 - свойство States. А у более других есть еще и events на разные события такого духа. |
| Автор: nomadminded 10.1.2007, 15:19 |
| re: SergeBS со states не очень понимаю как работать, не могли бы вы коротенький примерчик набросать? |
| Автор: SergeBS 10.1.2007, 15:45 | ||
| nomadminded, Ну нахал... В доке же все прозрачно описано. Навскидку:
"Hello, world" написать не пробовал? |
| Автор: drkot 10.1.2007, 15:57 |
| SergeBS, ну так это позволяет просто контролировать есть транзакция на сервере или нет. Их же десяток в очереди висеть может. Как я понимаю надо определить состояние конкретной. |
| Автор: nomadminded 10.1.2007, 16:21 |
| re:SergeBS, такое уже давно пробовала: while form1.ADOCommand1.States = stExecuting do; выдает ошибку [Error] Unit1.pas(259): E2008 Incompatible types и даже не компилится. |
| Автор: nomadminded 10.1.2007, 20:23 |
| все, спасибо, разобралась. |
| Автор: SergeBS 11.1.2007, 09:36 |
| nomadminded, Осталось для завершения: 1. Показать решение. 2. Закрыть тему (галочку поставить). |
| Автор: drkot 11.1.2007, 17:38 |
| SergeBS, а зачем? Он то уже разобрался. Теперь только при возникновении очередных проблем прибежит. |
| Автор: nomadminded 11.1.2007, 19:07 | ||
| re:SergeBS, решение на самом деле легкое. но вот где-то у меня в этом коде образуется мемлик..
не могу понять где может кто что подскажет? пс. насчет галочки - сорри, я тут новенькая. как разберусь окончательно - влеплю обязательно. |
| Автор: SergeBS 11.1.2007, 19:41 |
| nomadminded, Что такое мемлик? просто не понял. |
| Автор: nomadminded 11.1.2007, 19:49 | ||
| сорри, memory leak. обнаружила, что он образуется при
при отсутствии асинхронности мемлика нет.. any ideas? |
| Автор: SergeBS 12.1.2007, 08:29 | ||
nomadminded,
Нда. Неприятно. Подробнее изложи, какая версия Delphi и стоят ли updates, версия MDAC, чем утечка обнаружена. Навскидку - тут может повлиять ADOcommand.Close после выполнения. Но это так, совсем навскидку... |
| Автор: SergeBS 12.1.2007, 10:22 |
| Я тут маленько почесал репу |
| Автор: nomadminded 12.1.2007, 21:04 | ||
вообщем убрала я эту асинхронность и залила себе преспокойненько все 100 млн записей, чуть помедленнее, но все же без всяких утечек.
тут вы имели ввиду убирать значок асинхронности в ExecuteOptions? вряд ли помогло бы, имхо, хотя могу и ошибаться. но вообщем-то, думаю, пора закрывать тему. данные залиты, преступаем к обработке (: ждите меня скоро с новыми вопросами! |