Lazarus+MySQL 5.1
Модератор: Модераторы
Lazarus+MySQL 5.1
С "zeos dbo" невозможно работать из-за их нестабильности и множества ошибок.
Придётся использовать TSQLQuery.
В связи с чем, возникло несколько вопросов:
1.) Работает ли Lazarus с MySQL 5.1?
Нигде толком не написано. А на 5.0 мне крайне неохота откатывать. И так много проблем.
2.) Поддерживается ли возврат результатов из процедур?
Нет ли проблем, типа "sync error", как с "zeos", при использовании параметров CLIENT_MULTI_STATEMENTS и
CLIENT_MULTI_RESULTS? Или их не требуется устанавливать?
3.) Поддерживается ли сжатие?
Как в "zeos": compress=yes.
4.) Транзакции (TSQLTransaction) там как работают?
В "zeos" использовал два подключения. Здесь по-другому?
5.) Как использовать UpdateSQL и InsertSQL?
И возможно ли, например, запихнуть в (Update/Insert)SQL процедуру с параметрами и вызывать вручную?
Придётся использовать TSQLQuery.
В связи с чем, возникло несколько вопросов:
1.) Работает ли Lazarus с MySQL 5.1?
Нигде толком не написано. А на 5.0 мне крайне неохота откатывать. И так много проблем.
2.) Поддерживается ли возврат результатов из процедур?
Нет ли проблем, типа "sync error", как с "zeos", при использовании параметров CLIENT_MULTI_STATEMENTS и
CLIENT_MULTI_RESULTS? Или их не требуется устанавливать?
3.) Поддерживается ли сжатие?
Как в "zeos": compress=yes.
4.) Транзакции (TSQLTransaction) там как работают?
В "zeos" использовал два подключения. Здесь по-другому?
5.) Как использовать UpdateSQL и InsertSQL?
И возможно ли, например, запихнуть в (Update/Insert)SQL процедуру с параметрами и вызывать вручную?
Последний раз редактировалось А.Н. 09.06.2010 10:26:20, всего редактировалось 2 раза.
Блин, неужели никто даже на один вопрос ответить не может? 
Единственное, что я нашёл вразумительное, это вот такое:
http://www.lazarus.freepascal.org/index ... pic=9092.0

Хотя, кажется, кто-то говорил, что Lazarus уже работает с 5.1.
Попробовал на 5.0 откатить. Мне даже сервер запустить не удалось. Ничего не пишет.
С тем же файлом настроек, что и был. Хотя, verbose включен... Вроде бы.
Пока я с ним разберусь, у меня, вообще, всё время уйдёт.
Добавлено спустя 3 минуты 55 секунд:
Мать-перемать, они издеваются:

Добавлено спустя 21 минуту 6 секунд:
Работает.
Поскольку я искал весьма долго, приведу инструкцию, как заставить этот чёртов SQLDb в этом чёртовом
Lazarus работать с чёртовым MySQL 5.1. Может кому-то окажется полезным. :-/
1. Скачать отсюда:
http://downloads.mysql.com/archives.php ... 0&v=5.0.91
нужную сборку или исходники.
Например:
http://downloads.mysql.com/archives/mys ... -win32.zip
Далее, инструкция для сборки под windows, причём MySQL был установлен инсталлятором.
2. В каталоге с установленным MySQL переименовать файл bin/libmysql.dll в bin/libmysql_51.dll.
3. Скопировать libmysql.dll из каталога bin скачанного архива в каталог bin установленного сервера.
4. Перезапустить lazarus.
5. Копировать libmysql.dll из архива в каждый проект, который собирается работать с 5.1.
Добавлено спустя 5 минут 48 секунд:
Да, я думаю, понятно, что, во-первых, библиотека наверняка где-то есть и качать архив не обязательно.
Во-вторых, не факт, что после этого будут работать другие программы, которые проверяют версию библиотеки и требуют 5.1.
Но, если требуется, чтобы в design mode подключение осуществлялось, лучше, по-моему так сделать.
Иначе, наверняка, потом забудешь, что скопировал старую библиотеку в каталог lazarus.
Хотя... В винде, тоже есть симлинки...
Фиг знает.
Добавлено спустя 40 минут 42 секунды:
И ещё connect fine != work fine.
Сейчас у меня проблемы с кодировкой. Причём, при попытке изменения Connection.Params из "лазаруса" постоянно вылетают ошибки и он, сволочь, сдыхает.
Но, всё-таки, наверное, тут не при чём dll. Скорее всего, это проблема среды и компонентов.
Добавлено спустя 3 часа 45 минут 3 секунды:
Такая же глючная фигня.
Но, блин, я нашёл компоненты UniDAC/MyDAC. От DevArt. У меня их студия стоит. Очень удобная штука.
Компоненты порадовали. Просто класс.
Но, по-ходу, платные.
Найти бы крэк...
Добавлено спустя 57 минут 36 секунд:
УРА! Я нашёл полный MyDAC 5.80. К чёрту глючный "SQLDb", нахрен бажный "zeos". Надеюсь, больше к ним не вернусь.
Единственное, что я нашёл вразумительное, это вот такое:
http://www.lazarus.freepascal.org/index ... pic=9092.0
Хотя, кажется, кто-то говорил, что Lazarus уже работает с 5.1.
Попробовал на 5.0 откатить. Мне даже сервер запустить не удалось. Ничего не пишет.
С тем же файлом настроек, что и был. Хотя, verbose включен... Вроде бы.
Пока я с ним разберусь, у меня, вообще, всё время уйдёт.
Добавлено спустя 3 минуты 55 секунд:
Мать-перемать, они издеваются:
In all cases put a copy of libmysql.dll in the same directory as your project files. The TMySQL50Connection can connect fine to a MySQL 5.1 DBMS, but the version of libmysql.dll in the project directory must be that for MySQL 5.0 to match the TMySQL50Connection (libmysql.dll for MySQL 5.0 is 1484kB).
Добавлено спустя 21 минуту 6 секунд:
Работает.
Поскольку я искал весьма долго, приведу инструкцию, как заставить этот чёртов SQLDb в этом чёртовом
Lazarus работать с чёртовым MySQL 5.1. Может кому-то окажется полезным. :-/
1. Скачать отсюда:
http://downloads.mysql.com/archives.php ... 0&v=5.0.91
нужную сборку или исходники.
Например:
http://downloads.mysql.com/archives/mys ... -win32.zip
Далее, инструкция для сборки под windows, причём MySQL был установлен инсталлятором.
2. В каталоге с установленным MySQL переименовать файл bin/libmysql.dll в bin/libmysql_51.dll.
3. Скопировать libmysql.dll из каталога bin скачанного архива в каталог bin установленного сервера.
4. Перезапустить lazarus.
5. Копировать libmysql.dll из архива в каждый проект, который собирается работать с 5.1.
Добавлено спустя 5 минут 48 секунд:
Да, я думаю, понятно, что, во-первых, библиотека наверняка где-то есть и качать архив не обязательно.
Во-вторых, не факт, что после этого будут работать другие программы, которые проверяют версию библиотеки и требуют 5.1.
Но, если требуется, чтобы в design mode подключение осуществлялось, лучше, по-моему так сделать.
Иначе, наверняка, потом забудешь, что скопировал старую библиотеку в каталог lazarus.
Хотя... В винде, тоже есть симлинки...
Добавлено спустя 40 минут 42 секунды:
И ещё connect fine != work fine.
Сейчас у меня проблемы с кодировкой. Причём, при попытке изменения Connection.Params из "лазаруса" постоянно вылетают ошибки и он, сволочь, сдыхает.
Но, всё-таки, наверное, тут не при чём dll. Скорее всего, это проблема среды и компонентов.
Добавлено спустя 3 часа 45 минут 3 секунды:
Такая же глючная фигня.
Но, блин, я нашёл компоненты UniDAC/MyDAC. От DevArt. У меня их студия стоит. Очень удобная штука.
Компоненты порадовали. Просто класс.
Но, по-ходу, платные.
Добавлено спустя 57 минут 36 секунд:
УРА! Я нашёл полный MyDAC 5.80. К чёрту глючный "SQLDb", нахрен бажный "zeos". Надеюсь, больше к ним не вернусь.
- GAMER
- энтузиаст
- Сообщения: 627
- Зарегистрирован: 06.08.2008 13:41:07
- Откуда: Ужгород-Днепр, Украина
- Контактная информация:
Работаю с Mysql 5.5.2. Lazarus обновляю по svn. Там при переходе на новые версии Mysql были некоторые изменения в библиотеке Libmysql. Никаких компонент для мускуля не использую, работаю напрямую через libmysql.
Тяжко, наверное, работать напрямую через API. К тому же, а как вы, например, DBGrid используете?
Или вы от него отказались? Я так думаю, для справочников - он самое то.
Плюс, напрямую много кода, наверное.
Здесь же, например, в один запрос возможно упрятать SQL для выборки, SQL для вставки, SQL для обновления, SQL для блокировки.
Причём, по select SQL, компонент сформирует остальные автоматически, если они не написаны (ну, это-то понятно, во всех, только не во всех правильно).
Всё - в одном. Причём, никто не мешает процедуру засунуть в любой из сиквелов. Всё корректно.
Возвращает результат из процедуры корректно.
Плюс, кэширование обновлений, проверка параметров, хранение читабельных названий полей ну и т.д..
К тому же, у них, вроде как, есть проверка на изменение записи другим пользователем (не уверен, пока я не разбирался).
Проверку на изменение я, например, в программе делал сам. Опрос каждые n секунд таблицы, в которую записи добавляются по триггеру.
Если, они сделали проверку как-то по-другому на MySQL, это будет круто. Буду знать.
Но чего-то пока-что я сомневаюсь, хотя и есть некий OnUpdateRecord.
Плюс компоненты для управления сервером, создания резервной копии, простой загрузки данных (видимо, через LOAD), создания дампа, получения метаданных.
Зачем всё это делать вручную?
Или вы от него отказались? Я так думаю, для справочников - он самое то.
Плюс, напрямую много кода, наверное.
Здесь же, например, в один запрос возможно упрятать SQL для выборки, SQL для вставки, SQL для обновления, SQL для блокировки.
Причём, по select SQL, компонент сформирует остальные автоматически, если они не написаны (ну, это-то понятно, во всех, только не во всех правильно).
Всё - в одном. Причём, никто не мешает процедуру засунуть в любой из сиквелов. Всё корректно.
Возвращает результат из процедуры корректно.
Плюс, кэширование обновлений, проверка параметров, хранение читабельных названий полей ну и т.д..
К тому же, у них, вроде как, есть проверка на изменение записи другим пользователем (не уверен, пока я не разбирался).
Проверку на изменение я, например, в программе делал сам. Опрос каждые n секунд таблицы, в которую записи добавляются по триггеру.
Если, они сделали проверку как-то по-другому на MySQL, это будет круто. Буду знать.
Но чего-то пока-что я сомневаюсь, хотя и есть некий OnUpdateRecord.
Плюс компоненты для управления сервером, создания резервной копии, простой загрузки данных (видимо, через LOAD), создания дампа, получения метаданных.
Зачем всё это делать вручную?
- GAMER
- энтузиаст
- Сообщения: 627
- Зарегистрирован: 06.08.2008 13:41:07
- Откуда: Ужгород-Днепр, Украина
- Контактная информация:
Все зависит от поставленых задач.
Возможно я сильно не прав и дико ошибаюсь, но мне так удобней. Вся работа идет на уровне запрос - ответ. В отдельном модуле реализованы подпрограммы для связи мускуля с простыми компонентами (TStringGrid, TEdit, TComboBox etc).
Почему я так решил делать? Изначально, еще на C++Buildere мне не понравилась реализация работы с мускулем (много лишнего трафика, непонятно как проходит обновление даных, проблемы с запросами (когда для разных типов запросов нужны разные компоненты)). Потом мне показали пример работы напрямую через libmysql. Мне понравилось. Примеры (старые) можно увидеть на http://mirko.narod.ru в закладке "программы". Новый пример для мускуля 5.5.2 еще не закинул в связи с тем, что я его поломал
.
Возможно я сильно не прав и дико ошибаюсь, но мне так удобней. Вся работа идет на уровне запрос - ответ. В отдельном модуле реализованы подпрограммы для связи мускуля с простыми компонентами (TStringGrid, TEdit, TComboBox etc).
Почему я так решил делать? Изначально, еще на C++Buildere мне не понравилась реализация работы с мускулем (много лишнего трафика, непонятно как проходит обновление даных, проблемы с запросами (когда для разных типов запросов нужны разные компоненты)). Потом мне показали пример работы напрямую через libmysql. Мне понравилось. Примеры (старые) можно увидеть на http://mirko.narod.ru в закладке "программы". Новый пример для мускуля 5.5.2 еще не закинул в связи с тем, что я его поломал
Мне понравилось. Примеры (старые) можно увидеть на http://mirko.narod.ru в закладке "программы".
Я посмотрел. Вообще, мне тоже понравилось.
Просто. И нет лишнего. Создание компонента, всё-равно, память отнимает и время.
К тому же, самый большой плюс в том, что "сюрпризов" не возникнет такое количество, как при использовании компонент.
Но, с другой стороны, DB-контролами, конечно, не попользуешься. Конкретно, - DBGrid+DBNavigator.
В этом минус.
Не хранятся читабельные имена полей. Хотя тоже - вопрос спорный. Мне в своей программке, всё-равно, слой абстракции пришлось организовать. Поэтому, хранить их в запросе, вовсе не обязательно.
Тоже относится и к Insert/Update/Delete SQL.
Ещё - не очень наглядно.
Ну и, если захочется, всё-таки, запрос запихнуть в обёртку, чтобы легко обновлять результат, хранить его вместе с запросом, использовать какое-то определённое соединение, получатся классы.
А если ещё и мышкой захочется на форму всё это накидывать, чтобы TQuery.Create не писать и легко менять параметры, получатся компоненты.
В итоге, вы придёте к тому же самому.
Конечно, имеет смысл использовать работу напрямую. Но это же не исключает и использования компонент.
Всё зависит от задачи, так я думаю.
P.S.:
Кстати, нашёл у вас статью про скрещивание MySQL и FoxPro. Читаю. А FoxPro поддерживает транзакции?
- GAMER
- энтузиаст
- Сообщения: 627
- Зарегистрирован: 06.08.2008 13:41:07
- Откуда: Ужгород-Днепр, Украина
- Контактная информация:
Но, с другой стороны, DB-контролами, конечно, не попользуешься. Конкретно, - DBGrid+DBNavigator.
В этом минус.
DB-контролами легко заменяются на идентичные контролы + массив номеров строк.
Преимущество в том, что при навигации, не идут повторные запросы к серверу, минусы - в задержке, пока данные загрузятся, не видно обновленных данных в реальном режиме (но иногда это и плюс).
Не хранятся читабельные имена полей.
что имеется в виду?
Тоже относится и к Insert/Update/Delete SQL.
Что именно?
Это всего лишь пример, в проектах я немного по другому работаю. Зато, активно юзаю пример как мускуль-клиент.Ещё - не очень наглядно.
Согласен, так как все компоненты в итоге тоже работают напрямую через libmysql.В итоге, вы придёте к тому же самому.
P.S.:
Кстати, нашёл у вас статью про скрещивание MySQL и FoxPro. Читаю. А FoxPro поддерживает транзакции?
Было дело, но уже, наверное не актуально. Работает только под Виндовс95-98 и ДосФоксПро26.
Хотя в библиотеке хорошо видно как бегают пакеты к серверу и обратно. Так что, зная работу TCP/IP на Лазарусе, можно вообще не использовать libmysql
DB-контролами легко заменяются на идентичные контролы + массив номеров строк.
Преимущество в том, что при навигации, не идут повторные запросы к серверу, минусы - в задержке, пока данные загрузятся, не видно обновленных данных в реальном режиме (но иногда это и плюс).
Я из DB контролов только Grid и Navigator использую в связке. Для меня плюс в том, что контрол всё делает сам.
И думать не надо.
что имеется в виду?
DisplayLabel.
Что именно?
Если организуется ещё один "слой" абстракции, проблема с хранением Select/Insert/Update/Delete, в принципе отпадает. В основном.
Согласен, так как все компоненты в итоге тоже работают напрямую через libmysql.
Не совсем. Некоторые предоставляют выбор:
http://www.devart.com/mydac/overview.html
http://www.dumpz.ru/showthread.php?t=50815
Хотя, честно говоря, не знаю как работает direct. У меня крутится мысль о DLL в ресурсах, например.
Было дело, но уже, наверное не актуально. Работает только под Виндовс95-98 и ДосФоксПро26.
Всё-равно, любопытно. Я FoxPro не представляю, т.к. совсем не застал.
Вспомнил, что слышал тут на днях про Clarion, вроде так. Старая сетевая (в смысле модели - не реляционная) СУБД, вроде бы. %-)
Поискал. Тоже любопытно. Оказывается ещё язык такой есть (наткнулся на статью в wiki, не знаю относится ли к этой СУБД).
И даже новая среда разработки:
http://clarion.ru/index.php?option=com_ ... &Itemid=25
Нашёл на CIT про эту СУБД. Любопытно. Хвалили.
Хотя в библиотеке хорошо видно как бегают пакеты к серверу и обратно. Так что, зная работу TCP/IP на Лазарусе, можно вообще не использовать libmysql.
- GAMER
- энтузиаст
- Сообщения: 627
- Зарегистрирован: 06.08.2008 13:41:07
- Откуда: Ужгород-Днепр, Украина
- Контактная информация:
Считаю, что лучше работать через libmysql, а не на прямую через tcp/ip, потому что протокол может незначительно меняться, что отображается в библиотеке, а вот тогда нужно править сам код. А с библиотекой достаточно (хотя не всегда достаточно
) просто подменить libmysql.
Однако:
Это, вроде, 2008-й. Не знаю как сейчас. Я их лицензию не читал.
Добавлено спустя 1 минуту 29 секунд:
В любом случае, не факт, что старый код будет работать с новой DLL (и новым сервером).
А так это остаётся на откуп разработчика компонентов.
Поменялось что-то - обновили версию. Ну, в идеале.
Добавлено спустя 14 минут 31 секунду:
Кстати:
"Macros help you to change SQL statements dynamically. They allow partial replacement of the query statement by user-defined text. Macros are identified by their names which are then referred from SQL statement to replace their occurrences for associated values."
MyDAC ещё и макросы поддерживает. Весьма интересно.
Такой еще интересный момент, под клиентом подразумевается libmysql.dll так вот здесь возникает интересный момент, MySql как бы бесплатная СУБД и вы можете с ней работать бесплатно до одного момента - если вы захотите распространять свою программу вместе с libmysql.dll - то вам прийдется покупать лицензию, т.е. в этом плане Direct Mode выгоднее, однаго по возможностям он уступает Client Mode, и помоему и по скорости, хотя честно никогда работу этих режимов не сравнивал.
Это, вроде, 2008-й. Не знаю как сейчас. Я их лицензию не читал.
Добавлено спустя 1 минуту 29 секунд:
В любом случае, не факт, что старый код будет работать с новой DLL (и новым сервером).
А так это остаётся на откуп разработчика компонентов.
Поменялось что-то - обновили версию. Ну, в идеале.
Добавлено спустя 14 минут 31 секунду:
Кстати:
"Macros help you to change SQL statements dynamically. They allow partial replacement of the query statement by user-defined text. Macros are identified by their names which are then referred from SQL statement to replace their occurrences for associated values."
MyDAC ещё и макросы поддерживает. Весьма интересно.
Ну, так-то оно так... Хотя, всё-таки, выбор лишним не будет.
Ну сейчас использую ZEOSDBO-7.0.0-alpha и претензий нет. Кроме того если в libmysql.dll не изменится формат функций, то можно и 5.5 версию использовать (теоретически)
- GAMER
- энтузиаст
- Сообщения: 627
- Зарегистрирован: 06.08.2008 13:41:07
- Откуда: Ужгород-Днепр, Украина
- Контактная информация:
Можно и 5.5 (уже пофиксили - был глюк, который я описывал на багтрекере). Более того, у меня нормально работает с libMySQL.dll от MariaDB. Хотя, я использую далеко не все функции, может где-то и глюкнуть.
Кстати, там (MariaDB) вроде GPL-ная лицензия на либу, вот только не знаю, как под винду.
Кстати, там (MariaDB) вроде GPL-ная лицензия на либу, вот только не знаю, как под винду.
Внесу свою лепту.
win 7 64, mysql server 5.5
Не решился я откатываться так далеко всё-таки аж на 5.0 версию и начал плясать с бубном над 5.1+Lazarus
У меня установлен 5.5 сервер. С сайта мускула скачал предыдущую версию:
http://www.mysql.com/downloads/mysql/5.1.html
уж очень не 5.0 там помечена уже как безнадёжно устаревшая.
Скачал лазарус отсюда: http://www.hu.freepascal.org/lazarus/
Этот: ftp://ftp.hu.freepascal.org/pub/lazarus ... -win64.exe
Установил его и обнаружил, что там есть таки файлы исходников, содержащие в названии mysql51. Попытки собрать их не увенчались успехом...
Уж не знаю почему
Более того я нашёл в исходниках и что на палитре дожен быть компонент 51 и даже картинка там к нему есть, но его нет и всё. Сильно долго я не ковырялся. Пока решил проблему так:
libmysql из архива 5.1 кидаем в system32.
В uses программы ручками дописываем mysql51conn.
После чего делаем форму нужную но без коннектора. А коннектор создаём программно. В дизайн тайме теперь не поредактируешь базу, конечно, но зато работает всё, включая и навигатор и dbgrid.
Добавлено спустя 20 минут 5 секунд:
Забыл сказать
В дизайн тайме можно воспользоваться ODBC.
Я именно так и делаю. Проблемы которые приносит с собой этот ODBC не страшны, т.к. в процессе программирования нам не так принципиально отсутствие русских букв и ещё кучка проблем
Инструкция: устанавливаем ODBC с сайта mysql
запускаем администратор источников данных ODBC под виндой
Добавляем туда драйвер. У меня так:
Имя | Драйвер
MySQL ODBC 5.1 Driver | MySQL ODBC 5.1 Driver
Кидаем на форму компонент ODBC
И хитро заполняем его:
1) указываем юзера и пароль
2) указываем в Driver и DatabaseName одинаковые значения: 'MySQL ODBC 5.1 Driver'
3) указываем хост
4) в параметрах (Params) пишем
И всё заводится и запросы выполняет. Только эта хрень ещё не поддерживает UsePrimaryKeyAsKey в компонентах запросов. Поэтому у SQLQuery1 делаем UsePrimaryKeyAsKey false. И всё работает в дизайн тайме
А программно можно её потом Free, чтобы не мешала и всё тут
Для верности вешаем это всё на создание формы.
Вот попробовал работает:
Так же позволю себе заявление, что скорее всего взятая отсюда: http://downloads.mysql.com/archives.php?p=mysql-5.0 дллка для 5.0 и скопированная в system32 скорее всего запустит и компонент 50 не смотря на версию сервера
Пробовать не буду, т.к. там нет 64 битной версии 
win 7 64, mysql server 5.5
Не решился я откатываться так далеко всё-таки аж на 5.0 версию и начал плясать с бубном над 5.1+Lazarus
У меня установлен 5.5 сервер. С сайта мускула скачал предыдущую версию:
http://www.mysql.com/downloads/mysql/5.1.html
уж очень не 5.0 там помечена уже как безнадёжно устаревшая.
Скачал лазарус отсюда: http://www.hu.freepascal.org/lazarus/
Этот: ftp://ftp.hu.freepascal.org/pub/lazarus ... -win64.exe
Установил его и обнаружил, что там есть таки файлы исходников, содержащие в названии mysql51. Попытки собрать их не увенчались успехом...
libmysql из архива 5.1 кидаем в system32.
В uses программы ручками дописываем mysql51conn.
После чего делаем форму нужную но без коннектора. А коннектор создаём программно. В дизайн тайме теперь не поредактируешь базу, конечно, но зато работает всё, включая и навигатор и dbgrid.
Код: Выделить всё
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, mysql51conn, odbcconn, sqldb, db, FileUtil, Forms,
Controls, Graphics, Dialogs, DBGrids, StdCtrls, DbCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Datasource1: TDatasource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
MySQL51Connection1: TMySQL51Connection;
SQLQuery1: TSQLQuery;
SQLTransaction1: TSQLTransaction;
procedure Button1Click(Sender: TObject);
procedure SQLQuery1AfterPost(DataSet: TDataSet);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
MySQL51Connection1:=TMySQL51Connection.Create(Form1);
MySQL51Connection1.UserName:= 'root';
MySQL51Connection1.Password:= 'root';
MySQL51Connection1.DatabaseName:='test';
MySQL51Connection1.HostName:='localhost';
MySQL51Connection1.port:=3306;
MySQL51Connection1.CharSet:='utf8';
MySQL51Connection1.Open;
SQLQuery1.DataBase:=MySQL51Connection1;
SQLTransaction1.DataBase:=MySQL51Connection1;
SQLQuery1.Open;
end;
procedure TForm1.SQLQuery1AfterPost(DataSet: TDataSet);
begin
SQLQuery1.ApplyUpdates;
end;
end.
Добавлено спустя 20 минут 5 секунд:
Забыл сказать
В дизайн тайме можно воспользоваться ODBC.
Я именно так и делаю. Проблемы которые приносит с собой этот ODBC не страшны, т.к. в процессе программирования нам не так принципиально отсутствие русских букв и ещё кучка проблем
Инструкция: устанавливаем ODBC с сайта mysql
запускаем администратор источников данных ODBC под виндой
Добавляем туда драйвер. У меня так:
Имя | Драйвер
MySQL ODBC 5.1 Driver | MySQL ODBC 5.1 Driver
Кидаем на форму компонент ODBC
И хитро заполняем его:
1) указываем юзера и пароль
2) указываем в Driver и DatabaseName одинаковые значения: 'MySQL ODBC 5.1 Driver'
3) указываем хост
4) в параметрах (Params) пишем
Код: Выделить всё
PORT=3306
DATABASE=test
SERVER=localhostИ всё заводится и запросы выполняет. Только эта хрень ещё не поддерживает UsePrimaryKeyAsKey в компонентах запросов. Поэтому у SQLQuery1 делаем UsePrimaryKeyAsKey false. И всё работает в дизайн тайме
А программно можно её потом Free, чтобы не мешала и всё тут
Для верности вешаем это всё на создание формы.
Вот попробовал работает:
Код: Выделить всё
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, mysql51conn, odbcconn, sqldb, db, FileUtil, Forms,
Controls, Graphics, Dialogs, DBGrids, StdCtrls, DbCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Datasource1: TDatasource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
MySQL51Connection1: TMySQL51Connection;
ODBCConnection1: TODBCConnection;
SQLQuery1: TSQLQuery;
SQLTransaction1: TSQLTransaction;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure SQLQuery1AfterPost(DataSet: TDataSet);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
ODBCConnection1.Close;
MySQL51Connection1:=TMySQL51Connection.Create(Form1);
MySQL51Connection1.UserName:= 'root';
MySQL51Connection1.Password:= 'root';
MySQL51Connection1.DatabaseName:='test';
MySQL51Connection1.HostName:='localhost';
MySQL51Connection1.port:=3306;
MySQL51Connection1.CharSet:='utf8';
MySQL51Connection1.Open;
SQLQuery1.DataBase:=MySQL51Connection1;
SQLTransaction1.DataBase:=MySQL51Connection1;
SQLQuery1.UsePrimaryKeyAsKey:=true;
SQLQuery1.Open;
ODBCConnection1.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
procedure TForm1.SQLQuery1AfterPost(DataSet: TDataSet);
begin
SQLQuery1.ApplyUpdates;
end;
end.
Так же позволю себе заявление, что скорее всего взятая отсюда: http://downloads.mysql.com/archives.php?p=mysql-5.0 дллка для 5.0 и скопированная в system32 скорее всего запустит и компонент 50 не смотря на версию сервера
