![]() |
|
![]() ![]() ![]() |
|
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
Уже два часа юзаю поиск тут и на mysql.ru но ниче найьт не могу..
Трабла такая... Используя dbExpress создаю соединение с mysql SQLConnection1. Вот код из DFM'a.
Дык вот, когда пытаюсь Active сделать = TRUE через инспектор объектов - получаю.... 1. libmysql.dll not found. (Понапихал куда только можно... ив /bin и в папку с проектом и в c:/windows и /system32)... 2. Очищаю Vendorlib, получаю DLL/Shared Library name not set. Пробовал и полные пути написать - та же фигня.. Как от всего этого избавиться понять никак нет могу... С самим MySQL через PHP работаю уже года два. С базами из Delphi работал только с 7 Paradox'ом... Еще один такой момент... В результате каких-то монипуляций иногда выскакивает еще одна вещь что-то типа "Невозможно загруить драйвер" (или функцию драйвера)... |
|||
|
||||
<Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 2 Всего: 64 |
Используй компоненты ZeosAccess
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
<Spawn>
Дело в том, что программу надо будет компилить на многих компах, гд возможно не удастся установить данное расширение... (задание по практике в учеьном заведении). Поэтому хочется обойтись стандартными средствами...
TMySQL это оно? |
|||
|
||||
Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 3 Всего: 54 |
-------------------- ![]() |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
Если в этом покопаться, то можно рпзобраться.. Но повторюсь, надо сделатьна стандартном dbExpress'e...
Приложение - просто практика, никуда дальше не пойдет, поэтому надо сделать проще... Все-таки инитересует вариант работы именно с dbExpress.. |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
Уф, ну и многих же людей я запряг со своей проблемой...
Итак, вопрос решился... Рассказываю. 1. В папочку с проектом кладем libmySQL.dll от 3 версии MySQL, от 4 будет писать unable to load.... 2. Предположим, что на форме есть 3 Edit'a для хоста, логина, пароля и базы. 3. Объявляем Connection: TSQLConnection. 4. При нажатии на кнопку соединения делаем..
Все. К БД коннектиться... Дальше уже можно работать... Есть еще два маленьких вопроса... 1. Соединение с базой лучше закрывать только при закрытии программы и открывать при открытии или проделывать эти операции перед выполнением каждого запроса? Если все-таки лучше держать соединение открытым, то как во время работы программы проверить доступность сервера? Грубо говоря как mysql_ping() в PHP. 2. Как (оптимальнее и без возникновения ошибок) закрыть соединение... Connection.Free; DataSet.Free; Этого будет достаточно? |
|||
|
||||
Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 3 Всего: 54 |
1. Лучше кон6ечно держать соединение открытым во время работы программы... Т.к. выполнение подключения перед каждым запросом - трата времени и ресурсов...
Доступность сервера можно проверить по Connection.Connected... 2. Соединение закрывается по Connection.close... Делать Free перед закрытием программы не нужно, т.к. программа при закрытии его все равно выполнит... -------------------- ![]() |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
Спасибо (+1)
|
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
||||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
Я конечно дико извиняюсь, но...
От вышеупомянутого "счастья" избавился путем подмены libmySQL.dll Но теперь вопрос в другом.. Как в:
Отловить именно момент, когда запрос не выполнился... Поскольку при такой констркции: On Exception do (или EDataBaseError) shwmessage показывается в любом случае, даже если запрос выполняется. |
|||
|
||||
Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 3 Всего: 54 |
А там разве ExecSQL нету?..
Добавлено @ 19:19 Оно вместо Open - Close используется для разовых инструкций... -------------------- ![]() |
|||
|
||||
Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 3 Всего: 54 |
Из Help по Delphi 8
-------------------- ![]() |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
Kesh есть-то он есть, н с ним в любом случае showmessage показывается...
|
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
Путем проб и ошибок, осталось только одно...
При выполнении хоть Open, хоть ExecSQL, вылетает AccessViolation in address ... in module... На сколько я понимаю это может быть из-за того, что я неправильно связал DataSet, DataSource и Grid.. Вот как делаю:
Если в SQLDataSet.CommandText записать Inert ..., то запрос выполняется... Подрузомеваю, что выполняется и SELECT. Но, на SQLDataSet.Open; выскакиват AccessViolation и дальше я так понимаю процедура не продолжается.. Посему вопросы: 1. Какие мои действия приводят к AccessViolation, или наоборот, чего не хватает. 2. Достаточно ли этих строк для отображения результата выполнения SELECT запроса в таблице.. |
|||
|
||||
<Spawn> |
|
||||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 2 Всего: 64 |
В кмком модуле у тебя находятся компоненты доступа к БД? В каком участке кода пояляется AccessVioletion? Не в OnCreate главного модуля?
А как это могло скомпилиться :
Тебе нужно тут продублировать одинарные ковычки:
Это сообщение отредактировал(а) <Spawn> - 15.11.2004, 05:32 -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
||||
|
|||||
Mal Hack |
|
||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
Все объекты создаются в главном модуле. При OnActivate. AccessViolation появляется именно на Open у SQLDataSet.
Там не ковычки, а ` (буква Ё, где ). Синтаксис MySQL такую запись спокойно пропускает. Да и Делфи не ругается... Если что, сюда скинул исходники (152 кила) http://mal-hack.net/delphi.rar |
||||
|
|||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
Решение нашел...
1. Без использования dbExpress, а с использованием специальных классов TMySQLClien & TMySQLResult. 2. Все эти файлы ( файл приаттачит Secandr (90 кил)) надо положить либо в папку с проектом, либо в <Delphi_dir>/lib. 3. Код: Сразу говорю, показал только основные моменты. Код, для определения ошибок и т.п. писать не стал.
|
|||
|
||||
Secandr |
|
|||
![]() Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: нет Всего: 39 |
||||
|
||||
Secandr |
|
|||
![]() Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: нет Всего: 39 |
||||
|
||||
Mal Hack |
|
||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
Сорри, забыл отписаться о логической ошибочке.
В цикле занесеня данны в GRID вместо:
Надо
Т.е. переход на новую запись должен осуществляться после того, как пройдет цикл по полям текущей записи. |
||||
|
|||||
Cetus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 18.4.2004 Репутация: нет Всего: 1 |
Все должно работать без кавычек, по крайней мере с MySQL 4.0.2
Mal Hack, ты пробовал блокировать таблицы в своем проекте с DbExpress? (lock table tableOne write; unlock tables) --------------------
Легко внести изменения в код.Трудно сделать это корректно. |
|||
|
||||
Mal Hack |
|
||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
Какие ковычки? ![]()
Через dbExpress у меня запросы не выполнялись. Через класс TMySQLClient не пробовал. |
||||
|
|||||
Cetus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 18.4.2004 Репутация: нет Всего: 1 |
про кавычки в другой теме где то вычитал...
![]() TMySQLClient из MySQL.rar который выложил Secandr? --------------------
Легко внести изменения в код.Трудно сделать это корректно. |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
Ага. |
|||
|
||||
Bars_rb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 24.2.2007 Где: Ташкент Репутация: нет Всего: нет |
Хм.
Столкнулся с той же проблемой. Стоит MySQL 5 версии. Требует libmysql.dll. Понапихал ее всюду, но тут сказали, что надо от третей версии. Вопрос. Где ее взять? Не качать же ради нее весь серв. И пудет ли пахать файл от третей версии с 5 МуСКЛ-ом??? |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 22 Всего: 122 |
||||
|
||||
Bars_rb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 24.2.2007 Где: Ташкент Репутация: нет Всего: нет |
Хм.
Шото я найти не могу... Мож кто поделиться либо линком, либо файлом. |
|||
|
||||
B2_Russia |
|
|||
![]() В доску свой :) ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 3.7.2003 Где: Тверь Репутация: нет Всего: 1 |
Народ я может темень полная, но что за zlib? Это для чего еще? Это куда? =)
Вышел на эту тему ползая по форуму в поисках принципах работы с mySQL. Пишу программу которая будет работать в 2 вариантах - PHP и Delphi Как Mal тоже работал раньше с мусклом только из PHP... |
|||
|
||||
B2_Russia |
|
|||
![]() В доску свой :) ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 3.7.2003 Где: Тверь Репутация: нет Всего: 1 |
Прошло много времени...
Все уже успел успешно применить... Написал CMS-ку на PHP, сделал клиента с использованием zlib и MySQL.zip выложенных в этом треде. Но как только поставил CMS на хостинг, возникла проблема несовместимости версии клиента. Там требуется MySQL-клиента 4.1.18. И все встало! Прога работает только с локальной БД всвязи с чем является бесполезной :(((((((((((((((((((((((( Как решить проблему? |
|||
|
||||
B2_Russia |
|
|||
![]() В доску свой :) ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 3.7.2003 Где: Тверь Репутация: нет Всего: 1 |
Вобщем что только не перепробовал, всеми способами одна ошибка!
Понятно что не нравится версия клиента пишет что не поддерживается протокол, я уже и 5.0 ставил и 4.1.22 MySQL! NEED HELP!!! Это сообщение отредактировал(а) B2_Russia - 29.9.2007, 19:26 |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 22 Всего: 122 |
B2_Russia, читал?!
|
|||
|
||||
B2_Russia |
|
|||
![]() В доску свой :) ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 3.7.2003 Где: Тверь Репутация: нет Всего: 1 |
Да читал, сейчас прочитал повнимательней, и вроде все прошло удачно с подключением и выбором БД.
Щас попозже попробую выборку сделать. Всем кто встретился с этой проблемой, идите по выше приведенной ссылке. Если возникнут траблы отпишу! Rodman, thx! |
|||
|
||||
malice_ |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 18.6.2007 Репутация: нет Всего: нет |
какая у тебя версия delphi и mysql?
|
|||
|
||||
B2_Russia |
|
|||
![]() В доску свой :) ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 3.7.2003 Где: Тверь Репутация: нет Всего: 1 |
Delphi 7, mysql 4.1.22
До этого стоял mysql предыдущей версии . Сейчас все ок. |
|||
|
||||
malice_ |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 18.6.2007 Репутация: нет Всего: нет |
у меня ничего не получилось с 5.0.0.
куда копировал либ и pas? брал его из темы ? Это сообщение отредактировал(а) malice_ - 1.10.2007, 09:34 |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 22 Всего: 122 |
а через uses не получается подключить (кинуть канешь рядом с проектом)??? подробнее... по этому пояснению могу посоветовать поставить версию 4.ххх |
|||
|
||||
B2_Russia |
|
|||
![]() В доску свой :) ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 3.7.2003 Где: Тверь Репутация: нет Всего: 1 |
У меня версия 4, все работает, но судя по прилично изменившимся размерам libmysql.dll можно предположить что, там много чего поменялось в 5 версии, не исключено, что опять какой-нибудь алгоритм аутентификации, как было при переходе на 4 версию.
Кстати, этот файл mysql.pas не разработчиками предоставляется случайно? Тогда имеет смысл посмотреть при установке отметить галочку, чтобы были установлены тулзы для девелоперов, не помню как называется опция... Возможно найдешь в нем, что тебе нужно. |
|||
|
||||
B2_Russia |
|
|||
![]() В доску свой :) ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 3.7.2003 Где: Тверь Репутация: нет Всего: 1 |
Rodman, покажи пожалуйста пример если есть, как сделать выборку используя фукции mysql.pas?
Идея моя в том, чтобы сделать нечто похожее на набор классов TMySQLClient, TMySQLResult так как программа у меня уже написана под них, я сейчас слепил скелет этих классов, все что в примерах написано в закрепленном треде работает, но там нет ни одного примера выборки, как работать с результатом? Например:
В TMySQLResult мне нужно передать набор полученных данных, чтобы с ними работать используя функции типа First, Next, RecNo, GetFieldByName... Которые я сам должен реализовать. Проблема в получении данных, не могу понять как их забрать, как получить структуру MYSQL_RES? Это сообщение отредактировал(а) B2_Russia - 1.10.2007, 10:09 |
|||
|
||||
fidres |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 15.11.2006 Репутация: 1 Всего: 1 |
это вам на затравку. ;)
http://forum.vingrad.ru/forum/topic-134547...y1272485/0.html по части результатов и их обработки - это всё, по идее, нужно в цикле вытаскивать... там же, скорей всего, возвращается некая структура данных! а значит несколько полей обрабатывается... значит их нужно раскладывать по полочкам... сам ещё этой хренью не занимался в плотную, другой рутиой занят... обработка и коррекция данных при вводе оных в поля ввода и формирования на основе этих данных корректных запросов. ![]() с работы уволился, но прогу не бросаю. потом продамкому-нить! ;) --------------------
Исправьте ошибку в слове <ХЕРОШО> и я скажу Вам оптимист Вы или пессимист. |
|||
|
||||
fidres |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 15.11.2006 Репутация: 1 Всего: 1 |
кстати.
может завести отдельно топ по мускулю, а, Rodman? с крыжиком "важно", чтоб он никуда вниз не уползал... и будем туда пихать свои наработки. кто чем богат... примеры, приёмы... (а если завести отдельную группу - то можно будет только девелоперам писать, а те, кто спросить чего захочет - чтоб в другую тему писали - права на группу забацать) у меня пока только наработки по компонентам есть, в которые инфа вводится, чтоб потом в базу закидывать... но думаю тож немаловажно. могу поделица. в основном не использую специализированные компоненты типа DB... SQL... обрабатываю и вывожу в StringGrid'ы, ComboBox'ы... ну и обычные Edit'ы... есть ещё CheckListBox... --------------------
Исправьте ошибку в слове <ХЕРОШО> и я скажу Вам оптимист Вы или пессимист. |
|||
|
||||
Deepthroat |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 24.9.2007 Где: Outer Heaven Репутация: нет Всего: 2 |
Как я уже писал в другой теме, выход из ситуации для MySQL 5 и dbExpress есть.
Во-первых, надо использовать libmySQL.dll от той версии сервера, к которой намерены подключаться. Во-вторых, надо использовать библиотеки отсюда http://www.crlab.com/dbx вместо предлагаемых dbExpress по умолчанию. Эти dll'ки работают с MySQL 5 без проблем. |
|||
|
||||
black_priest |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 19.3.2007 Где: Minsk Репутация: нет Всего: нет |
Но эти либы на http://www.crlab.com/dbx платные. А есть ли бесплатное решение? Или нужно подождать пока сам борланд не возьмется за поддержку mysql 5?
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |