![]() |
|
![]() ![]() ![]() |
|
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 -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "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. |