Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Delphi с использовунием БД MySql

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5

Открыть новую тему     Написать ответ в эту тему

sss6666

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветик!
 
Была у меня аналогичная проблемка.  Хотел, тоже пользовать сторонние компоненты, но большая проблема с описанием. На стандартные компонеты их больше. В конце концов мой выбор пал на dbExpress. С ним есть одна маленькая проблема. Он не работает изначально. Просит библиотеку libMysql.dll. В инете я накачал с десяток библиотек разных размеров, но все они работали коряво. Или вовсе не работали. Некоторые соединение устанавливали, но запросы отправить не давали, а выдавали лишь странные ошибки. В конце концов, когда я уже хотел забросить MySQL и перейти к долбаному Access-у и MsSQL-ю, а переходить к ним я нехотел из-за того, что мне нужно было сделать базу по бесплатнее, от этого и сервер с Linux. Тут мне попался компонет название которого не помню, но он у меня используется в первой форме - создаёт таблицы и выполняет любые запросы к базе. Хотя обладает довольно скудным набором функций по сравнению с dbExpress. С его помощью я создавал все таблицы в базе и саму базу. Но дальше я нашёл случайно "правильную" библиотеку libmysql.dll это оказалась библиотека от Windows версии MySQL сервера 3.23.58. От новых windows версий не пробовал, возможно тоже пойдёт.
Пример моей базы здесь.  
http://slil.ru/23541101  
Она рабочая, но недоделанная и многие алгоритмы можно было бы переделать, но ка пример сойдёт. Главное что рабочая. Там создаётся база, таблицы около 7 штук, и сделано несколько форм для заполнения базы. (Delhi8) может и в 7-й откроется.

Всего записей: 1 | Зарегистр. 26-10-2006 | Отправлено: 23:59 08-12-2006
Sergey913

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Возникла проблема с DirectMysqlObject, когда подключаюсь к серверу.
 
Есть клиент Mysql на Delphi написанный, система у меня Win, версия Mysql 5.0.18. Есть хостер у которого FreeBSD и у него Mysql 4.1.21. Сначала я устанавливаю туннель по SSH через программу Putty, когда коннект установлен, то я на локалхост на нужный порт подсоединяюсь. Но появляется ошибка "Client does not support authentication protocol requested by server; consider upgrading MySQL client".
 
Что это может быть? Поиск по гуглу говорит, что это проблема со старым и новым методом шифрования паролей, но ведь они появились начиная с MySQL 4.1, значит уже и там и там есть. В чем проблема?

Всего записей: 60 | Зарегистр. 22-09-2006 | Отправлено: 07:16 25-01-2007
bbEye



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sergey913
В MySQL 5.0 матрица снова поменяла метод аутентификации (по сравнению с 4.1).
Надо подложить клиенту либу libmysql.dll от пятерки. По идее, она будет коннектиться к пятой и к четвертой версии сервера.

Всего записей: 128 | Зарегистр. 30-04-2003 | Отправлено: 09:09 25-01-2007
Sergey913

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bbEye
А куда ее подкладывать? В Делфи я библиотеку не добавля, когда компонент устанавливал.
Он вообще ставится просто копированием нескольких файлов... Нашел только mysqlinc.inc, но там мало интересного:
 
{$UnDef NEVERENABLEME}
{Note: has basically the same role as EXTRA_DEBUG in mysql and should not be enabled except for testing purposes}
{$Define HAVE_COMPRESS}
{this will actually include zlib code into the executable}
{$Define _WIN_}
{this will actually enable windows winsock imports}
{.$Define HAVE_SSL}
{this will actually include openssl calls into the executable and enable ssl communication}
{NOTE: you will need libeay32.dll and ssleay32.dll for ssl to work}
{.$Define HAVE_THREADSAFE}
{this will actually enable the client thread safe}
 
 
В денвере у меня стоит php и только там лежит эта библиотека, хз откуда он ее вообще берет...

Всего записей: 60 | Зарегистр. 22-09-2006 | Отправлено: 10:42 25-01-2007 | Исправлено: Sergey913, 10:46 25-01-2007
bbEye



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sergey913
Библиотека libmysql.dll - это клиентское API к MySQL. Она поставляется вместе с сервером, и лежит в каталоге mysql\lib\opt . Чаще всего программы, которым требуется подключение к MySQL, поднимают эту либу, и вызывают её методы.  
 
Но, похоже, DirectMysqlObject её не использует, а напрямую общается с сервером через tcp-соединение. В версии 1.2.1 DirectMysqlObject анонсирована поддержка MySQL 4.1, и всё... дальше проект затух. Я так понимаю, что протокол пятой версии сервера этот компонент не знает. Получается, что достучаться к пятой версии с этим компонентом не удастся.

Всего записей: 128 | Зарегистр. 30-04-2003 | Отправлено: 11:18 25-01-2007
Sergey913

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bbEye
Так дело в том, что у меня стоит дома пятый mysql и он чудесно с ним работает! Если конектится к нему, то что он у меня дома мало значения, главное конектится и работает!
А вот на сервере как раз 4.1.21!

Всего записей: 60 | Зарегистр. 22-09-2006 | Отправлено: 11:24 25-01-2007
bbEye



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sergey913
А-а-а, я сначала подумал наоборот, что к 4.1 коннектится, а к 5.0 - нет...
Посмотрел только что код подключения в DirectMysqlObject - там есть следующая лажа:
 
модуль uMysqlClient.pas, строка 758

Код:
 
if pos('4.1.0', fserver_version)=1 then
    FUse410Password:=true
else
    FUse410Password:=false;
 

 
Т.е. юзать пароль в стиле 4.1 компонент будет только в том случае, если версия сервера - 4.1.0
 
Думаю, что надо поправить примерно так:

Код:
 
if pos('4.1.', fserver_version)=1 then
 


Всего записей: 128 | Зарегистр. 30-04-2003 | Отправлено: 12:03 25-01-2007
Sergey913

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bbEye
Ага, осталось только скачать эту версию
Спасибо вам огромное товарищ с собакой
 
Хотел только обрадоваться, так на тебе "Bad handshake". Нашел разные варианты, говорят порт надо поменять или dll обновить или таймаут вышел...
 
Я библиотеку не нашел сначала, порядочный Windows в папке с виндой не ищет оказывается
Недалеко ушел... опять то же самое, даже с библиотекой. Кажется не заставить его работать...

Всего записей: 60 | Зарегистр. 22-09-2006 | Отправлено: 13:41 25-01-2007 | Исправлено: Sergey913, 13:54 25-01-2007
bbEye



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sergey913
Так, libmysql.dll уже не решит проблему, т.к. DirectMysqlObject её не использует.
 
Скачать версию 4.1.0 - не проблема. Другое дело - уговорить хостера её поставить
 
Правка строки в модуле uMysqlClient.pas не помогает? Или это после неё "bad handshake"? Клиентскую программу есть возможность перекомпилировать? (можно еще внутри найти строчку '4.1.0' и заменить её на '4.1.2' - в данном конкретном случае это поможет)

Всего записей: 128 | Зарегистр. 30-04-2003 | Отправлено: 14:09 25-01-2007
SergeBS



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dad1969
Применяй "портфельную" модель. Т.е. скачал на юзера данные - пусть их долбит, а по необходимости - попытки отправить на сервер. Т.е. нечто типа beginrtan/committran.

Всего записей: 272 | Зарегистр. 19-04-2005 | Отправлено: 14:31 25-01-2007
Sergey913

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 
 Правка строки в модуле uMysqlClient.pas не помогает? Или это после неё "bad handshake"?

Да как раз после этого и начал. Библиотека не помогла, толку от нее нету кажется совсем...
 

Цитата:
Клиентскую программу есть возможность перекомпилировать?

Сколько угодно, могу на бис и на заказ Это если про программу, я ее сам пишу, вот только уперся в эту проблему с самим коннектом
 

Цитата:
(можно еще внутри найти строчку '4.1.0' и заменить её на '4.1.2'  - в данном конкретном случае это поможет)

Попробовал, еще попробовал поставить. Еще я заменил на 24.1.2 и все осталось так же. Т.е. в том смысле, что ничего не изменилось. Перед тем как конектится у меня в мое базу идет запрос и я там беру кое какие данные, так вот даже при 24.1.2 оно их выбрало из простого локалхоста....  При этом перекомпилировал программу каждый раз.
 
Еще про порт хотел сказать, он для удаленного 3307 так как с 3306 который как я читал для Mysql стандартный, может от этого какие грабли... но на него конектится не получалось, видимо там стандартный занят, хотя это врядли.
 

Цитата:
 Применяй "портфельную" модель.

А что за модель?

Всего записей: 60 | Зарегистр. 22-09-2006 | Отправлено: 14:39 25-01-2007 | Исправлено: Sergey913, 14:44 25-01-2007
bbEye



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sergey913
М-да... На мой взгляд, пока не поздно, надо пересесть на другой набор компонентов для доступа к MySQL. Все-таки, DirectMysqlObject уже больше года, как не подает признаков жизни.
 
В своих приложениях я использую MyDAC (CoreLab). Этот компонент, кстати, тоже можно настроить для работы без libmysql.dll, поверх сокетов, но лучше уж с dll-кой (надежнее, и не зависишь от протокола).
 
PS: Из-за другого номера порта не должно что-то сломаться.

Всего записей: 128 | Зарегистр. 30-04-2003 | Отправлено: 15:15 25-01-2007
Sergey913

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 В своих приложениях я использую MyDAC (CoreLab). Этот компонент, кстати, тоже можно настроить для работы без libmysql.dll, поверх сокетов, но лучше уж с dll-кой (надежнее, и не зависишь от протокола).

Так и сделаю пожалуй, там говорят его кому-то бесплатно раздают?
А то на компонет у меня денег нет, если бы я что-то на продажу писал или профессионально этим занимался, тогда другое дело...

Всего записей: 60 | Зарегистр. 22-09-2006 | Отправлено: 15:37 25-01-2007
bbEye



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sergey913

Цитата:
Так и сделаю пожалуй, там говорят его кому-то бесплатно раздают?  

Даю прямую наводку:
http://forum.ru-board.com/topic.cgi?forum=35&topic=32815&start=1034

Всего записей: 128 | Зарегистр. 30-04-2003 | Отправлено: 16:28 25-01-2007
alekceur

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
извините за оффтоп
по моему с 3 версией мускуля була библиотека libmysql.dll  с делфи 7 она работала.
поменял версию мускулля на 4 заменил библиотеку из комплекта не работает
 
прочитал посты выше но так ине понял есть ли нормальные библиотеки для связки mysql и делфи

Всего записей: 4 | Зарегистр. 30-11-2007 | Отправлено: 17:06 03-03-2008
gerbirosius



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо всем !!! После тщательного теста самым простым и самым лудшем из бесплатных
является Zeos прекрасно конектица при уском трафике на удаленный сервак .
 

Всего записей: 84 | Зарегистр. 01-04-2009 | Отправлено: 08:35 18-06-2009 | Исправлено: gerbirosius, 11:13 20-06-2009
Kursist



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
jetage
Извините, а можете и мне кинуть интерфейс mySQL для Дельфи. У меня D2007.
bolderaj@rambler.ru
 
проинсталлировал на Windows Vista mySQL.
Подскажите, какие компоненты использовать. Самое элементарное - как всё запустить?
 
Взял компонент TSQLConnection из dbExpress.
Свойства такие:
 Connected: FALSE
 ConnectionName: mySQLConnection
 DriverName: mySQL
 GetDriverFunc: getSQLDriverMySQL
 LibraryName: dbxmys30.dll
 VendorLib: libmysql.dll
 
Меняю Connected: на TRUE
 Database login:
 Database: MySQLConnection (не редактируемое) Сразу вопрос - когда это такая база данных появилась?
 Username: user (root тоже не помогает)
 Pasword:...
 
выдает ошибку: Unknown MySQL server host 'ServerName'(11004)
 
 
Добавлено:
Будет правильно, наверное, уточнить, что меня попросили сделать "простенькую" (как выразилось начальство) программку. Идея такова, что на сервере надо будет хранить базу данных с таблицами, с разных компов должен быть к ней доступ. Менеджеры будут заполнять ее описанием заказов, а исполнители должны будут иметь возможность просматривать список заказов. То есть, я это задание понимаю как написание клиента. Использую D2007. Стоит выбор СУБД. Первые мысли были о mySQL, но это не принципиально. Главное, чтобы СУБД был бы бесплатный (для начала) и я мог бы программировать на своем ноуте (D2007, Vista)  
В данный момент заказы пишут в OpenOffice.

Всего записей: 137 | Зарегистр. 12-07-2004 | Отправлено: 16:52 18-06-2009 | Исправлено: Kursist, 17:04 18-06-2009
gerbirosius



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kursist
 
dbExpress TSQLConnection
 
VendorLib -  указывает на библ. API (libmysql.dll) для mysql сервера, бывает разных версий  
которые соответствуют версиям сервера. Находится обычно в корне bin с сервером ,  
располагают в бине борланда или в папке с прогой .    
LibraryName – драйвер или просто библ.драйв. dbxmys30.dll,
так же соответствует версиям до  MySQL 5 короче смотрите доку
поставляюмую вместе с делфи там написано какая версия и какие глюки. Находится в бине борланда.
Params – параметры подключения: localhost , root и т.п.  кроме порта , указывать
порт только ручками через API , параметры можно  
еще указать здесь C:\Program Files\Common Files\Common Files\Borland Shared\DBExpress\ dbxconnections.ini или dbxdrivers.ini  
LoadParamsOn – включение загрузки параметров то есть выше описанный Params ini  
 LoginPromt – вкл и выкл диалогового окна для ввода параметров подключения  
всплывающего после connected true.
 
 

Всего записей: 84 | Зарегистр. 01-04-2009 | Отправлено: 08:17 19-06-2009
ekemov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Kursist
есть несколько компонентов для MySql, которые обсалютно бесплатные. работать с ними очень просто. за компанентами пиши в ПМ.

Всего записей: 804 | Зарегистр. 23-12-2005 | Отправлено: 07:05 07-07-2009
volser

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kursist
Из платных я бы посоветовал MyDac от Devart.

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 11:44 07-07-2009
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Delphi с использовунием БД MySql


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru