|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Можно ли использовать ADO из службы?
Доброго дня. Есть необходимость подключиться к MySQL из службы.
1. Скачан драйвер для MySQL 2. Создан системный DNS 3. На форму положено ADOConnection и ADOQuery 4. В ADOConnection забита ConnectionString (тест проходит успешно), LoginPromt := False; В ADOQuery стоит Connection := AdoConnection. Все как обычно. Но этот код - не работает, глушит службу и ОС ее выключает : Код:
procedure TTTsRTM.LoadSQL; var Answer : TStringList; begin Answer := TStringList.Create; Answer.Add('Hello'); Q.SQL.Clear; Q.SQL.Text := 'SELECT * FROM referent'; Q.Open; // Вот тут программа падает while NOT Q.Eof do begin Answer.Add(Q.FieldValues['R.ObjectName'] + ',' + Q.FieldValues['t8.AValue'] + ',' + Q.FieldValues['t8.Stt']); Q.Next; end; Answer.SaveToFile('c:\logsss.txt'); Q.Close; end; |
#2
|
||||
|
||||
В АДО накручено лихо все, попробуй какие-нибудь сторонние компоненты, которые прямое подключение обеспечивают.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
||||
|
||||
Цитата:
А отчего может быть такая ситуация как у меня? Причем, даже если я на форме попытаюсь выставить в ADOQuery := True, то выползет неизвестная ошибка :-( P.s. хм... создаю оконное приложение - такая же ошибка. Видимо в чем то глюк. Хотя в ConnectionString подключение проходит. Странно... Последний раз редактировалось alexusankov, 28.05.2013 в 12:03. |
#4
|
||||
|
||||
Цитата:
upd: и вот это Цитата:
Код:
Q.Close; Q.SQL.Text := 'SELECT * FROM referent'; try Q.Open; except on E:Exception do ShowMessage('при открытии запроса произошла ошибка: ' + E.Message); end; Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Последний раз редактировалось Yurk@, 28.05.2013 в 12:22. |
#5
|
||||
|
||||
[quote=Yurk@]QUOTE]
К сожалению, это не возможно, т.к. работатть не будет.Так и пишет - неизвестная ошибка А вот собственно и она - это происходит, когда я прямо на форме пытаюсь активировать TADOQuery З.ы. Шо значит напрямую? Без ODBC? Последний раз редактировалось alexusankov, 28.05.2013 в 13:31. |
#6
|
||||
|
||||
ищи косяк в настройках подключения и запросе.
третьего не дано) Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#7
|
||||
|
||||
Цитата:
Три драйвера для MySQL перебрал. Впервые к MySQL цепляюсь. Как искать косяки, если источник данных и ConnectionString - проходят тест, и говорят что он успешен... Ехх.. :-( База данных, довольно своебразна кстати. Пускает без авторизации. Может проблема с этим? Последний раз редактировалось alexusankov, 28.05.2013 в 16:18. |
#8
|
||||
|
||||
А если не из службы, а из обычного приложения, то ошибок не выдаёт?
|
#9
|
||||
|
||||
Цитата:
В любом состоянии. Что из службы, что из формы. Как на Delphi, так и на C++. Хотя и там и там, тест при создании ConnectionString проходит нормально. Единственное что - попытка активировать ADOQuery прямо на форме вызывает такую же ошибку. Впервые MySQL касаюсь, а данные с этой базы снимать , ой как хочется. P.s. а, кстати! Облазил уже весь гугл, и пришла в голову мысль - возможно в MySQL нельзя так просто делать запросы, как я привык делать это в MS SQL? То есть Код:
Q.SQL.Text := 'SELECT * FROM referent'; Может надо ставить ; в конце фразы? Юзать use TableName, и GO?? Товарищи, кто работал с MySQL из ADO, просвятите пожалуйста! Последний раз редактировалось alexusankov, 28.05.2013 в 17:16. |
#10
|
||||
|
||||
Чтот никак не осиляется MySQL.
Товарищи, есть у кого какие догадки, в какую смотреть сторону? Какие нюансы я мог пропустить, переходя с MSSQL на MySQL? |
#11
|
||||
|
||||
кидай архив проэкта сюда (тот который "оконный", а не службу)
Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
Этот пользователь сказал Спасибо Yurk@ за это полезное сообщение: | ||
alexusankov (31.05.2013)
|
#12
|
||||
|
||||
А все скорее всего проще простого. У вас права на чтение таблиц то имеются? Подключится к MySQL еще не значит получить доступ к объектам.
Кроме того, вот не нравится мне имя вашего контрола Connect. Уж больно оно близко к служебным именам. Во избежании переименуйте его во что-то менее опасное. Идем дальше. Есть у MySQL одна фича, у него все имена таблиц, полей желательно явно выделять т.е. Код:
select * from `MyTable` Код:
select * from [MyTable] Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 29.05.2013 в 17:13. |
#13
|
||||
|
||||
Цитата:
Да собственно проекта то и нету. Есть DBGRID->DataSource->ADOQuery->ADOConnection. Имена стандартные. Даже кода нету, SELECT забит в ADOQuery->SQL Перепробовал вышеописанное. Не выходит ничего. Может загвоздка в отсутствии учетной записи Последний раз редактировалось alexusankov, 31.05.2013 в 08:58. |
#14
|
||||
|
||||
Туплю жестоко - не могу понять. Не получается, та же самая ошибка.
Ребят, вы можете набросать простейшую форму в три строки, которая коннектится к локалхосту, с учеткой root:root. и делает SELECT * FROM t8 ? Хочу проверить - если заработает, значит я что то упускаю |