Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Delphi с использовунием БД MySql

Автор: sss6666
Дата сообщения: 08.12.2006 22:59
Приветик!

Была у меня аналогичная проблемка. Хотел, тоже пользовать сторонние компоненты, но большая проблема с описанием. На стандартные компонеты их больше. В конце концов мой выбор пал на dbExpress. С ним есть одна маленькая проблема. Он не работает изначально. Просит библиотеку libMysql.dll. В инете я накачал с десяток библиотек разных размеров, но все они работали коряво. Или вовсе не работали. Некоторые соединение устанавливали, но запросы отправить не давали, а выдавали лишь странные ошибки. В конце концов, когда я уже хотел забросить MySQL и перейти к долбаному Access-у и MsSQL-ю, а переходить к ним я нехотел из-за того, что мне нужно было сделать базу по бесплатнее, от этого и сервер с Linux. Тут мне попался компонет название которого не помню, но он у меня используется в первой форме - создаёт таблицы и выполняет любые запросы к базе. Хотя обладает довольно скудным набором функций по сравнению с dbExpress. С его помощью я создавал все таблицы в базе и саму базу. Но дальше я нашёл случайно "правильную" библиотеку libmysql.dll это оказалась библиотека от Windows версии MySQL сервера 3.23.58. От новых windows версий не пробовал, возможно тоже пойдёт.
Пример моей базы здесь.
http://slil.ru/23541101
Она рабочая, но недоделанная и многие алгоритмы можно было бы переделать, но ка пример сойдёт. Главное что рабочая. Там создаётся база, таблицы около 7 штук, и сделано несколько форм для заполнения базы. (Delhi8) может и в 7-й откроется.
Автор: Sergey913
Дата сообщения: 25.01.2007 06:16
Возникла проблема с 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, значит уже и там и там есть. В чем проблема?
Автор: bbEye
Дата сообщения: 25.01.2007 08:09
Sergey913
В MySQL 5.0 матрица снова поменяла метод аутентификации (по сравнению с 4.1).
Надо подложить клиенту либу libmysql.dll от пятерки. По идее, она будет коннектиться к пятой и к четвертой версии сервера.
Автор: Sergey913
Дата сообщения: 25.01.2007 09:42
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 и только там лежит эта библиотека, хз откуда он ее вообще берет...
Автор: bbEye
Дата сообщения: 25.01.2007 10:18
Sergey913
Библиотека libmysql.dll - это клиентское API к MySQL. Она поставляется вместе с сервером, и лежит в каталоге mysql\lib\opt . Чаще всего программы, которым требуется подключение к MySQL, поднимают эту либу, и вызывают её методы.

Но, похоже, DirectMysqlObject её не использует, а напрямую общается с сервером через tcp-соединение. В версии 1.2.1 DirectMysqlObject анонсирована поддержка MySQL 4.1, и всё... дальше проект затух. Я так понимаю, что протокол пятой версии сервера этот компонент не знает. Получается, что достучаться к пятой версии с этим компонентом не удастся.
Автор: Sergey913
Дата сообщения: 25.01.2007 10:24
bbEye
Так дело в том, что у меня стоит дома пятый mysql и он чудесно с ним работает! Если конектится к нему, то что он у меня дома мало значения, главное конектится и работает!
А вот на сервере как раз 4.1.21!
Автор: bbEye
Дата сообщения: 25.01.2007 11:03
Sergey913
А-а-а, я сначала подумал наоборот, что к 4.1 коннектится, а к 5.0 - нет...
Посмотрел только что код подключения в DirectMysqlObject - там есть следующая лажа:

модуль uMysqlClient.pas, строка 758

Код:
if pos('4.1.0', fserver_version)=1 then
FUse410Password:=true
else
FUse410Password:=false;
Автор: Sergey913
Дата сообщения: 25.01.2007 12:41
bbEye
Ага, осталось только скачать эту версию
Спасибо вам огромное товарищ с собакой

Хотел только обрадоваться, так на тебе "Bad handshake". Нашел разные варианты, говорят порт надо поменять или dll обновить или таймаут вышел...

Я библиотеку не нашел сначала, порядочный Windows в папке с виндой не ищет оказывается
Недалеко ушел... опять то же самое, даже с библиотекой. Кажется не заставить его работать...
Автор: bbEye
Дата сообщения: 25.01.2007 13:09
Sergey913
Так, libmysql.dll уже не решит проблему, т.к. DirectMysqlObject её не использует.

Скачать версию 4.1.0 - не проблема. Другое дело - уговорить хостера её поставить

Правка строки в модуле uMysqlClient.pas не помогает? Или это после неё "bad handshake"? Клиентскую программу есть возможность перекомпилировать? (можно еще внутри найти строчку '4.1.0' и заменить её на '4.1.2' - в данном конкретном случае это поможет)
Автор: SergeBS
Дата сообщения: 25.01.2007 13:31
dad1969
Применяй "портфельную" модель. Т.е. скачал на юзера данные - пусть их долбит, а по необходимости - попытки отправить на сервер. Т.е. нечто типа beginrtan/committran.
Автор: Sergey913
Дата сообщения: 25.01.2007 13:39

Цитата:

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

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


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

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


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

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

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


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

А что за модель?
Автор: bbEye
Дата сообщения: 25.01.2007 14:15
Sergey913
М-да... На мой взгляд, пока не поздно, надо пересесть на другой набор компонентов для доступа к MySQL. Все-таки, DirectMysqlObject уже больше года, как не подает признаков жизни.

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

PS: Из-за другого номера порта не должно что-то сломаться.
Автор: Sergey913
Дата сообщения: 25.01.2007 14:37

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

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

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

Даю прямую наводку:
http://forum.ru-board.com/topic.cgi?forum=35&topic=32815&start=1034
Автор: alekceur
Дата сообщения: 03.03.2008 16:06
извините за оффтоп
по моему с 3 версией мускуля була библиотека libmysql.dll с делфи 7 она работала.
поменял версию мускулля на 4 заменил библиотеку из комплекта не работает

прочитал посты выше но так ине понял есть ли нормальные библиотеки для связки mysql и делфи
Автор: gerbirosius
Дата сообщения: 18.06.2009 07:35
Спасибо всем !!! После тщательного теста самым простым и самым лудшем из бесплатных
является Zeos прекрасно конектица при уском трафике на удаленный сервак .

Автор: Kursist
Дата сообщения: 18.06.2009 15:52
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.
Автор: gerbirosius
Дата сообщения: 19.06.2009 07:17
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.


Автор: ekemov
Дата сообщения: 07.07.2009 06:05
Kursist
есть несколько компонентов для MySql, которые обсалютно бесплатные. работать с ними очень просто. за компанентами пиши в ПМ.
Автор: volser
Дата сообщения: 07.07.2009 10:44
Kursist
Из платных я бы посоветовал MyDac от Devart.
Автор: ekemov
Дата сообщения: 07.07.2009 13:39
volser
решил поработать с MyDac от Devart, намного сложнее с ним работать чем с libsql ссылка тут.#
Автор: volser
Дата сообщения: 07.07.2009 13:53
ekemov
А что там сложного? Обычные DB компоненты. А как с помощью libsql вывести данные в DBGrid?
Автор: ekemov
Дата сообщения: 08.07.2009 00:08
volser
можно такой использовать zeoslib #
Автор: volser
Дата сообщения: 08.07.2009 10:43
ekemov
Я знаком почти со всеми компонентами доступа к данными. Zeos мне не очень нравится. Он развивается очень медленно, хотя с плюсов, то что он бесплатный.
Автор: ekemov
Дата сообщения: 08.07.2009 13:11
volser
я очень долгое время работал напрямую с dll, просто в одном проекте стал вопрос хранения различных документов в БД, и я перешёл на UniDAC. сразу появились проблемы с синтаксисом, " двойные кавычки не канают, подовай одинарные для текстовых полей. а по скорости работаю одинаково.
Это дело вкуса. И подходить нужно из необходимых задач.
Автор: Destrock
Дата сообщения: 05.12.2014 11:30
[q]Так и сделаю пожалуй, там говорят его кому-то бесплатно раздают?
А то на компонет у меня денег нет, если бы я что-то на продажу писал или профессионально этим занимался, тогда другое дело...[/q]

Не качайте пиратские взломаные версии. Сейчас Devart раздаёт бесплатные версии своих продуктов. У них появилась программа лояльности к пользователям XChange называется. Подробнее тут http://www.devart.com/ru/xchange/

Страницы: 123

Предыдущая тема: C#


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.