Работа сервиса и MySql

Все особенности программирования под платформу Wintel
Ответить
Аватара пользователя
demon416
Сообщения: 87
Зарегистрирован: 30 янв 2006, 14:03
Откуда: kirovskoe

06 фев 2009, 15:39

Есть база на MySql есть порга которая добавляет записи в таблицу, требуется написать сервис делающий тоже что и прога. Ворос: Сервис ну ни в какую не хочет писать ничего в базу (исходный код сервиса взят из проги)? как добиться этого от него ? какие настройки необходимы или возможно нужны другие компоненты? я использую ADOTable или ADOQuery.. Фактически сервис точно вылетает после строки типа ADOQuery.ExecSQL или ADOTable.Active:=true;
строка подключения взята из рабочей проги ...
ака хинт: коментируйте код, самим же легче будет разобраться ;)
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

06 фев 2009, 16:07

А по какому сигналу сервис должен это делать?
В программе, например, можно добавить кнопку и в обработчике события Click добавить запись. А от сервиса Вы что хотели бы получить?
Аватара пользователя
demon416
Сообщения: 87
Зарегистрирован: 30 янв 2006, 14:03
Откуда: kirovskoe

06 фев 2009, 16:26

Сервис в бесконечном цикле опрашивает прибор на ком порту и должен полученные данные заносить в базу данных
ака хинт: коментируйте код, самим же легче будет разобраться ;)
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

06 фев 2009, 16:31

Таких сервисов не бывает :)
Основной поток сервиса не сможет так работать.
В крайнем случае он просто повесит процесс service.exe.
Копайте в сторону TThread, либо средствами WinAPI создайте поток.
В этом потоке выполняйте опрос.
Аватара пользователя
demon416
Сообщения: 87
Зарегистрирован: 30 янв 2006, 14:03
Откуда: kirovskoe

06 фев 2009, 16:36

так и делается))
тем не менее не работает
ака хинт: коментируйте код, самим же легче будет разобраться ;)
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

06 фев 2009, 16:39

Я все-таки склонен считать, что не во взаимодействии с MySQL дело.
Вместо записи в базу поставьте запись в лог-файл, или хоть просто beep.
Если эта часть кода не выполняется, то надо разбираться почему.
Аватара пользователя
demon416
Сообщения: 87
Зарегистрирован: 30 янв 2006, 14:03
Откуда: kirovskoe

06 фев 2009, 16:48

работает с логом, не работает с mysql
ака хинт: коментируйте код, самим же легче будет разобраться ;)
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

06 фев 2009, 22:10

Ну, одно из двух: либо ошибка при переносе кода из приложения в сервис, либо некорректная работа с MySQL. В любом случае без исходного кода обсуждение бессмысденно.
BBB
Сообщения: 1272
Зарегистрирован: 27 дек 2005, 13:37

09 фев 2009, 09:58

(Возможно, сейчас скажу совсем не в тему, но вдруг поможет)
Может, дело в том, что в какой-то момент сервису нужен доступ к какому-то сетевому ресурсу? А сервисы, запущеные от учетной записи LocalSystem такого доступа не имеют. Сам с этой проблемой сталкивался, когда сервис должен был обращаться к сетевому диску. Проблема решалась только тем, что сервис запускался от какой-то другой учетной записи, имеющей соответсвующие права доступа.
Ответить