Содержание
- Подключение из Delphi через драйвер к MySQL
- Ответы (2 шт):
- Delphi +Firedac and network connection error
- 1 Answer 1
- Firedac does not connect on my phone but does on my computer — Delphi Xe5 — Mysql
- 3 Answers 3
- Delphi 7 — ADOConnection unable to connect due to SQL «must change password» flag
- 2 Answers 2
- ISAPI, MySQL и DataSnap XE2.
- Установка и настройка необходимого ПО
- Настраиваем сервер на работу с MySQL
- «DBX Error: Driver could not be properly initialized…» Как победить?
- Создаем соединение с БД, читаем данные и отправляем их клиенту
- Разработка клиента
- Создаем клиент для чтения данных
- Создаем клиент для чтения и редактирования данных
- Отладка ISAPI-модулей в Delphi
Подключение из Delphi через драйвер к MySQL
Хочу подключиться из Delphi к MySQL
скачал mysql-connector-odbc-5.2.7-winx64.msi
Установил. Завёл Delphi XE, но в списке «Создание нового источника данных» данный драйвер в списке не присутствует.
Как его ещё устанавливать? Или где-то прописывать ручками, что-то надо?
Ответы (2 шт):
Дело в том, что Вы используете 64-разрядный драйвер. А, Delphi как была, так и сейчас осталась 32-разрядной. Поэтому Delphi его и не «видит».
Проблема обычно решается установкой 32-разрядного драйвера.
P.S. Для версии XE2 и выше это замечание также актуально. 64-разрядный там, по сути, только компилятор под Win64. Сама IDE по прежнему 32-разрядная и «видит» только 32-разрядные драйвера.
Все зависит от целевой платформы 32 ли 64 бит и типа подключения. Если используется dbGo (TADOConnection) тогда для каждой (32/64) нужно устанавливать свой ODBC Connector. И вручную создавать пользовательские, файловые или системные DSN выбрав соответсвенно драйвер MySQL. Но поставщиком данных нужно все равно выбирать Microsoft OLE DB Provider for ODBC!
А вот с использованием DbExpress или FireDAC все не так однозначно. IDE может сильно ругаться приблизительно такими словами:
DBX error: Driver could not be properly initialized Client library May be missing, of the wrong version, May be missing from the driver or the system path.
Источник
Delphi +Firedac and network connection error
My app is working with MySQL database, to connection I’m using FireDAC components. Last time I have got a network problem, I test it and it is looks like (time to time) it losing 4 ping request. My app return me error: «[FireDAC][Phys][MySQL] Lost connection to MySQL server during query». Now the question: setting fdconnection.TFDUpdateOptions.LockWait to true (default is false) will resolve my problem or make new problems?
1 Answer 1
TFDUpdateOptions.LockWait has no effect on your connection to the database. It determines what happens when a record lock can’t be obtained immediately. The documentation says it pretty clearly:
Use the LockWait property to control whether FireDAC should wait while the pessimistic lock is acquired (True), or return the error immediately (False) if the record is already locked. The default value is False.
The LockWait property is used only if LockMode = lmPessimistic.
FireDAC can’t wait to get a lock if it loses the connection, as clearly there is no way to either request the lock or determine if it was obtained. Therefore, changing LockWait will not change the lost connection issue, and it may slow many other operations against the data.
The only solution to your lost ping requests is to fix your network connection so it stops dropping packets. Simply randomly changing options on TFDConnection isn’t going to fix networking issues.
Источник
Firedac does not connect on my phone but does on my computer — Delphi Xe5 — Mysql
I am developing a firemonkey application and testing it on my samsung S4. I have a remote mysql database that i am attempting to connect to using firedac.
Obviously this requires libmysql.dll and ive added it on the computer, and the database does connect in design mode. but when i compile and run it on my s4, it does not compile. i get the [FireDAC][Phys]-300. Driver[MySQL] is not registered, you can drop component [tfdphmysqldriverlink into your project
Can anybody help me resolve this?
Just to be clear as well on this. I am in need of a freeware client, Such as zeoslib etc.
3 Answers 3
I use Devart MyDAC components for my firemonkey apps. It works on Android without the need for MySQL client lib.
This sounds obvious but did you add a tfdphmysqldriverlink component to your project?
Edit: sorry answered too quickly, looks like MySQL is not supported for android in XE5.
Like mentioned above, some options are:
I had same problems. And I solved as like below. It’s not difficult.
1st, You need to check libmysql.dll is in the right directory. Be sure to see what you have 32bit.dll and 64bit.dll. If you don’t know then you can get it from here MySQL download page both 32bit, 64bit When you compile 32-bit mode you need 32bit.dll, when 64-bit mode needs 64bit.dll
Copy it to c:/Program Files(x86)/Embarcadero/Studio/17.0/bin
Caution: when you compile 64-bit mode with 32-bit.dll it will show an error.
As you see below I use 32bit mysql.dll and MariaDB server. Quite an adventure to me but I got success. Mysql server also good.
2nd, In the form, FDConeection, FDQuery, BindsourceDB
With FDconnection(double click it) you can test connection to DB.(Easy to use)
With FDQuery access DB table data from DB. If you do well copy correct version to bin directory It has to show success message.
With BindsourceDB you can set data to listview or dbgrid some component can list up your data.
My case I use livebinding.
Источник
Delphi 7 — ADOConnection unable to connect due to SQL «must change password» flag
I am having a problem that occurred in a specific circumstances in my Delphi 7 application.
I have ADOConnection that goes to my MS SQL server with some username and pass — SQL authentication. The problem is that MS SQL login was created with «User must change pass at next login» flag that makes ADO Connection impossible to connect with error message «18488 — Login failed for user ‘%.*ls’. Reason: The password of the account must be changed.»
Normally, in MS SQL Management Studio a change password prompt is shown, and user is able to enter new password. The question is what should I do to force password change on this user in my application? I am able to catch error number and prompt for login change, but what then? There is no flag in a connection string that I could use to change pass/reset to new (like Old Password and New Password). What should I do then?
Can anyone help?
2 Answers 2
When you trap the 18488 error, You need to show your own «change password» dialog, and use connection string properties «Old Password» / «Password» via SQL Native Client as your provider (i.e. Provider=SQLNCLI10 or SQLNCLI.1 ).
Here is a small code I used to test this:
My answer is based on these readings:
This is the official way of changing passwords from the client side when you enforce password expiration and use «User must change password at next login» option on the SQL server.
If installing the SQL Server Native Client on the users machine is an issue, I can think of few more options:
- Create a web-service (on your servers) that will be responsible for changing the user’s password provided old/new passwords and returning status back to your client.
- Connect as «super user» (such as sa ), and alter the user’s/login password. meaning you will need to hold that username/password on the client machine (bad idea IMHO from security point of view but might be workable). — not tested
- do NOT create SQL logins with «User must change password at next login». which is my favorite solution.
Источник
ISAPI, MySQL и DataSnap XE2.
Сегодня картинок тоже будет не мало. В продолжение темы «Windows 7 x64, IIS, ISAPI и DataSnap XE2 в картинках» решил я поработать с базой данных. Получать от сервера ReverseString, конечно, весело («Оно работает!», «Уау!» и всё такое прочее), но на деле врядли кому-то такой сервер пригодиться. Поэтому решил расширить свой кругозор и доработать уже имеющийся ISAPI-модуль и клиента, чтобы они смогли обмениваться данными — сервер будет читать данные из базы данных и отправлять их клиенту. Клиент, в свою очередь, будет получать данные с сервера, работать с ними и отправлять изменения на сервер.
Вообще, т.к. наш ISAPI-модуль предназначен для IIS, то, наверное, логичнее было бы рассказать про работу c MSSQL, а не с MySQL. Но, признаюсь, попытка установки MSSQL Server на мой компьютер была неудачной по причине того, что меня просто откровенно задолбало выкачивать с сайта Microsoft тучу каких-то сервис-паков к дистрибутиву, которые в итоге просили ещё не меньшую кучу обновлений. В общем плюнул я на это дело и решил установить MySQL — всё-таки это очень популярная СУБД, да и провайдеры, предоставляющие Win-хостинг обычно дают доступ и к MSSQL и к MySQL (например, МастерХост). Да и, в принципе, какая нам сегодня разница, что за СУБД будет использоваться MSSQL, MySQL или вообще FireBird? Основная задаче сегодня — «научить» сервер и клиент работать с данными из базы, а её (БД) тип — дело второе.
Установка и настройка необходимого ПО
Итак, начнем с установки необходимого программного обеспечения и его настройки. Для сегодняшней работы скачал у установил следующее ПО:
- MySQL 5.0 с сайта mysql.ru
- Для работы с базами данных был скачан с mysql.com и установлен MySQL Workbanch
По умолчанию MySQL установится в Windows 7 x64 в директорию c:Program Files (x86)MySQLMySQL Server 5.0. В этой же директории Вам будет предложено хранить файлы БД — я при установки оставил все настройки без изменений.
Теперь подготовим нашу тестовую БД с помощью MySQL Workbench. Запускаем программу и создаем новое подключение:
В общем случае, настройки должны быть такими:
- HostName = 127.0.0.1 (или localhost)
- Port = 3306
- User = root
- Password = (заданный при настройке MySQL)
После того, как соединение создано, дважды кликаем по его названию в списке и создаем новую БД:
Я создал БД с такими настройками:
- Name = dsbase
- Collation = utf8 — utf8_general_ci
Проще было бы работать с кодировкой cp1251, но в Сети всё же чаще используется utf8 — с этой кодировкой и будем баловаться разбираться. Теперь остается последний шаг — создать таблицу в нашей базе. Для этого дважды щелкаем в списке БД по нашей только что созданной, чтобы она стала активной, жмем кнопку «Create New Table…» (или вызываем контекстное меню в дереве у узла Tables) и создаем в редакторе новую таблицу:
Я создал таблицу с названием dstable и четырьмя полями — id, имя, фамилия и день рождения. Какую таблицу создадите Вы — не важно, главное, чтобы она была в БД.
Теперь приступим к работе в Delphi. И первым делом немного переделаем наш ISAPI-модуль.
Настраиваем сервер на работу с MySQL
Когда я рассматривал работу над ISAPI-dll в прошлый раз, то выбрал для класса с серверными методами предка TComponent. Тогда мне не требовалась никакая работа с наборами данных или невизуальными компонентами, поэтому я ограничился самым простым классом из предложенных. Сегодня же нам потребуются и TSQLConnection и другие невизуальные компоненты, поэтому удобнее будет использовать другого предка, например, TDSServerModule. Удаляем старый проект сервера — в нем нет ничего, кроме того, что было создано мастером и создаем новый, как я рассказывал в прошлый раз, но только в качестве предка для класса серверных методов выбираем TDSServerModule. Теперь в менеджере проектов наш сервер будет выглядеть так:
Пока ServerMethodUnit1 ничего не содержит и сейчас мы это исправим. Первым делом создадим новое подключение для MySQL в Data Explorer. Настройки соединения у нас должны быть следующие:
- ServerName = localhost
- Database Name = dsbase (её мы и создавали в Workbench)
- User Name/Password = заданным при настройке MySQL.
Проверяем соединение — соединение есть:
Но это оно (соединение) есть у меня. А вот у Вас его может и не быть с самого начала. Например, Вы можете получить вот такое нехорошее сообщение:
Поэтому сделаем небольшое лирическое отступление и посмотрим как с такой ситуацией бороться.
«DBX Error: Driver could not be properly initialized…» Как победить?
Во-первых, надо проверить наличие библиотеки libmysl.dll на компьютере. Эта библиотека должна располагаться либо в директории с проектом, либо в следующих местах:
Для x86 | Для x64 |
$BDSbin | $BDSbin64 |
WindowsSystem32 | WindowsSysWOW64 |
Если же после того, как Вы положили библиотеку по одному из предложенных выше путей соединение так и не хочет работать, то, тогда внимательно смотрите на версию самой библиотеки, т.к. не каждая (даже скачанная с официального сайта) dll может заработать. У меня соединение нормально заработало только с библиотекой для x86, которую Вы можете скачать по ссылке ниже:
Скачиваете архив, распаковываете DLL, например, в WindowsSystem32 и соединение заработает. Ну, а если не заработает…делитесь решениями в комментариях.
Теперь с соединением проблем вроде бы быть не должно, поэтому снова возвращаемся к нашему серверу.
Создаем соединение с БД, читаем данные и отправляем их клиенту
Открываем модуль с серверными методами (по умолчанию — это ServerMethodsUnit1) и бросаем на него сначала такие компоненты:
Для TSQLConnection устанавливаем следующие свойства:
- ConnectionName = dsMySQL (заданное в Data Explorer)
- Driver = MySQL
- VendorLib = LIBMYSQL.dll
- Connected = True
У TSQLDataSet в свойстве SQLConnection выбираем SQLConnection1, а также сразу зададим и свойство CommandText. Для этого вызовем редактор и составим SQL-запрос вида:
SELECT * FROM dstable
Теперь можете проверить, что в SQLDataSet поступают данный — переключите свойство Active в значение True — при этом, если всё было сделано верно, не должно вызываться никаких исключений.
Теперь разберемся с тем как переслать клиенту все, что было получено из БД. Клиент не в курсе, что там делает на другой стороне наш сервер, как и куда подключается, что считывает. Клиенту главное — получить набор данных в каком-либо удобоваримом для него виде. И для этого мы напишем очень просто серверный метод, который будет возвращать клиенты TDataSet. Открываем исходный код модуля с серверным классом и создаем такой метод:
Всё. Большего нам пока от сервера и не требуется. Как только клиент вызовет метод GetDataSet наш SQLDataSet1 получить все данные из таблицы и отправиться прямиком на клиент. Теперь вернемся к разработке клиента.
Разработка клиента
Клиент может только получать данные от сервера, а может (что чаще всего происходит) получать, добавлять и редактировать данные на сервере. В зависимости от того в каком режиме будет работать клиент (Read Only или Read/Write) будет зависеть состав компонентов. Рассмотрим оба варианта работы клиента начнем с более простого.
Создаем клиент для чтения данных
Создаем новый проект Delphi и бросам на главную форму следующие компоненты:
- TSQLConnection
- TSqlServerMethod
- TDataSetProvider
- TClientDataSet
- TDataSource
- TDBGrid
- TDBNavigator
- TCheckBox
У Вас должно получиться что-то типа такого:
Теперь настроим компоненты. Про настройку TSQLConnection я рассказывал в прошлый раз, поэтому можете открыть ссылочку и прямо по картинкам провести настройку компонента. Единственное, что следует помнить, что ISAPI-модуль (наш сервер) должен работать, чтобы Вы смогли сгенерировать клиентский модуль с серверными методами.
Теперь настроим TSQLServerMethod. Вообще, этот компонент удобно использовать в том случае, если нам необходимо получить данные только для чтения. У TSQLServerMethod устанавливаем следующие свойства:
- SQLConnection = SQLConnection1;
- ServerMethodName = TServerMethods1.GetDataSet;
Можете проверить работу компонента — переключите свойство Active в True — если соединение работает корректно, то это действие приведет к тому, что свойство TSQLConnection.Connected также станет равным True.
У компонента TDataSetProvider в свойстве DataSet указываем SQLServerMethod1.
У ClientDataSet1 в свойстве ProviderName указываем DataSetProvider1.
У DataSource1 в свойстве DataSet указываем ClientDataSet1
У DBGrid1 в свойстве DataSource указываем DataSource1
У DBNavigator1 в свойстве DataSource указываем DataSource1
И, наконец, у CheckBox1 пишем обработчик OnClick:
И всё. Клиент для чтения данных с сервера готов к работе. Для порядка можете из DBNavigator1 исключить кнопки, связанные с модификацией данных, а можете и не убирать, если они вам не мешают. Чтобы убедиться, что все работает как часы — просто измените свойство Active у ClientDataSet1 на True и табличка DBGrid должна вывести вам все данные из БД, но т.к. я ещё не вносил никаких данных, то у меня вид окна программы стал таким:
В приведенном выше примере клиента мы создали вот такую связь компонентов:
Для чтения данных с сервера этого достаточно, для модификации — нет. Напишем теперь клиентское приложение, которое будет и читать и модифицировать данные.
Создаем клиент для чтения и редактирования данных
Для статьи я буду создавать новое приложение, а Вы, если хотите, можете изменять только что созданного клиента. Итак, чтобы создаем новый проект и бросаем на главную форму следующие компоненты:
- TSQLConnection
- TDSProviderConnection
- TClientDataSet
- TDataSource
- TDBGrid
- TDBNavigator
- TCheckBox
Внешний вид главной формы приложения у меня получился следующий:
Как видите, состав компонентов стал несколько другим. TDSProviderConnection необходим нам для того, чтобы обеспечить ссылку на TDataSetProvider на стороне сервера. Но, как Вы можете Видеть выше — никакого TDataSetProvider у нашего сервера нет. Поэтому на минуту вернемся к серверу, добавим в модуль ServerMethodsUnit1 компонент TDataSetProvider у которого в свойстве DataSet укажем SQLDataSet. Вид модуля у сервера теперь стал таким:
Теперь пересобирите ISAPI-модуль, выключите IIS, забросьте куда необходимо IIS-модуль и снова включите IIS.
Возвращаемся к нашему клиенту. Будем считать, что TSQLConnection у Вас уже настроен (тритий раз повторяться не буду). Переходим сразу к TDSProviderConnection и устанавливаем у него следующие свойства:
- SQLConnection = SQLConnection1
- ServerClassName = TServerMethods1
Теперь устанавливаем свойства у TClientDataSet:
- RemoteServer = DSProviderConnection1
- ProviderName = DataSetProvider1;
Свойство ProviderName — это список, который формируется после запроса к серверу и в это список ничего руками вписывать не следует. Если у вас не получается сделать вот так:
то одно из двух:
- Сервер не работает
- Не правильно настроен TDSProviderConnection или TSQLConnection
Теперь устанавливаем у DataSourse свойство DataSet как ClientDataSet1 и настраиваем свойства у DBGrid и DBNavigator.
У CheckBox1 снова пишем обработчик OnClick:
Этого будет достаточно, чтобы запустить все компоненты по цепочке. И остается решить вопрос с обновлением БД. Я не стал выдумывать ничего лишнего и сделал отправку изменений на сервер в ручном режиме. т.е. добавил на форму кнопку и определил обработчик OnClick следующим образом:
Вот теперь можно запустить наш клиент и попробовать добавить/отредактировать/удалить записи.
Будьте уверены — данные отправятся на сервер и сохраняться в базе данных.
Как видите сегодня мы с Вами решили поставленную задачу, а также определились с отличиями в составе компонентов у клиента, который работает только на чтения и у клиента для полноценной работы с данными. Исходники всех трех проектов я выложу, но пока открытым остается один вопрос, который, полагаю, возникал у тех, кого заинтересовала тема ISAPI — как проводить отладку ISAPI-модуля? Вопрос на самом деле не большой, поэтому сейчас его быстренько и рассмотрим.
Отладка ISAPI-модулей в Delphi
Как Вы знаете, любую dll-ку в Delphi можно отладить, если в свойствах проекта прописать значение «Host Application». Указываем в свойстве exe-шник, который использует нашу dll, запускаем проект и спокойненько отлаживаем библиотеку. Чем тогда отличается ISAPI-модуль от обычной DLL? Ответ очевиден — ничем. Это точно такая же динамическая библиотека, экспортирующая методы и для её отладки нам просто необходимо найти нужный exe-файлик.
Немного покопавшись по Сети я нашел тот самый exe-файл:
w3wp.exe отвечает за запуск веб-приложения на IIS и обработку запросов от других приложений. Другими словами этот файл делает возможным работу нашего сайта, который мы создавали с вами для работы.
Свойства проекта, который мы будем отлаживать должны быть такими:
- Host Application = C:WindowsSystem32inetsrvw3wp.exe
- Parameters = -debug
- Host Application = C:WindowsSystem32inetsrvw3wp.exe
- Parameters = -debug -s 10
Чтобы отладить ISAPI-dll выполняем следующие действия:
- Останавливаем полностью работу IIS
- Ставим где надо точки останова
- Запускаем проект dll и убеждаемся, что процесс w3wp.exe стартовал:
4. Запускаем клиента, что-нибудь делаем и убеждаемся, что отладка проходит отлично:
Источник
Sometimes the simple things are harder than you expected and dbexpress probably comes under that category, it was less express than I had expected but once you figure things out it does work. Some of the problems were my fault while others took time due to the obscur nature of the errors returned by XE and XE2.
If you start by adding the TSQLConnect component, select the MySQL driver and configure your HostName, Database, UserName and Password you can try and connect, you will most likely strike the following error :-
Show Plain Text
Text code
-
DBX Error: Driver could not be properly initialized. Client library may be missing, not installed properly, of the wrong version, or the driver maybe be missing from the system path…
So once you figure out that your missing the libmysql.dll you might try and grab the latest MYSQL C Connector from dev.mysql.com, they are up to version 6.0.2 at the time of writing this, you’ll get the same error above. I was getting a more obscure crash before XE2 Update 1 which I didn’t note down at the time, that abstract error message took me a while to figure out and was related to the libmysql.dll version.
It would be nice if embarcadero provided a location where you could download the compatible libmysql.dll files that work with dbexpress, it is worth noting that the XE2 read me does come with the following note :-
Show Plain Text
Text code
-
Supported Servers
-
dbExpress
-
…
-
MySQL 5.1, 5.0.27, 4.1* (Pro/Ent/Ult/Arch) (Driver dbxMYS.dll, Client libmysql.dll)
-
The following combinations have been tested:
-
LibMySQL.dll (5.1.XX) DBXMys.dll MySQL 4.0.XX Server
-
LibMySQL.dll (5.1.XX) DBXMys.dll MySQL 4.0.XX Server
-
LibMySQL.dll (5.1.XX) DBXMys.dll MySQL 5.0.XX Server
-
LibMySQL.dll (5.1.XX) DBXMys.dll MySQL 5.1.XX Server
To get a 5.1.XX compatible DLL you will need to download an achieved mysql complete installation zip and extract the DLL as no compatible versioned MYSQL C Connector package could be downloaded when I looked.
To save you some time I added zip download containing the win32 x86 libmysql.dll for those who wish to download.
This is libmysql.dll version 5.1.59 win32 x86 DLL which I have tested and works with both XE and XE2.
50 Responses to “Getting embarcadero dbexpress mysql working — DBX Error: Driver not initialized”
44.
w. swelam
Sep 28, 2012
Sorry, comments have been closed for this post.
В данном тексте напишем программу, которая будет подключаться к серверу и опрашивать таблицу с базами данных. Результаты запроса – список баз данных, будем отображать в выпадающий список TCombobox.
Как подключиться из Delphi к MySQL?
Для разработки этого примера, предполагаем, что мы уже хорошо работаем с самим сервером MySQL. Для этого можете прочитать мой цикл статей MySQL – первые шаги для новичков.
Создадим простейшее подключение из клиента Delphi. Разместим на форме следующие компоненты – несколько labeledEdit, кнопки Connect и Disconnect, SQLConnection1, StatusBar снизу и все это на вкладке PageControl, так как будем расширять программу, в следующих статьях.
Кнопку Connect обработаем таким образом
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
procedure TForm1.Button1Click(Sender: TObject); begin with sqlconnection1 do begin Drivername:=‘MySQL’; with params do begin clear; add(‘Hostname=’+LabeledEdit1.Text); add(‘port=’+LabeledEdit2.Text); add(‘User_name=’+LabeledEdit3.Text); add(‘Password=’+LabeledEdit4.Text); add(‘database=’+LabeledEdit5.Text); end; try Connected:=true; if connected=true then statusbar1.Panels[0].Text:=‘Connected’ else statusbar1.Panels[0].Text:=‘Could not connect ‘; except showmessage(‘Error’); statusbar1.Panels[0].Text:=‘Could not connect ‘; end; end; end; |
Кнопку Disconnected таким образом…
procedure TForm1.Button2Click(Sender: TObject); begin try sqlconnection1.Connected:=false; if sqlconnection1.connected=true then statusbar1.Panels[0].Text:=‘Connected’ else statusbar1.Panels[0].Text:=‘Disconnected’; except showmessage(‘error’); end; end; |
Проверяем работу программы,нажав на Connect…
Видим в StatusBar, надпись Connected, значит всё подключилось…
Теперь попробуем cобирать информацию о списке баз данных, для этого сделаем следующие вещи
Как получить список баз данных MySQL и вывести его в Delphi?
Добавим компонент SimpleDataSet1 – в него будем собирать данные из запроса о базах данных, и изменим LabeledEdit для выбора базы данных на ComboBox, чтобы выводить в него данные.
Когда Вы проделаете все шаги, результат будет примерно таким…
Итак, поехали…
Для того, чтобы нам получить список БД, нам изначально нужно законнектиться к базе под именем mysql и сделать такой запрос (Более подробно об обсуждении как делать запрос здесь)
SELECT schema_name FROM information_schema.schemata |
То есть, если бы мы делали это из клиента mysql.exe, то получилось бы таким образом…
Но мы находимся в Delphi, поэтому, предлагаю обработать получение списка данных в момент FormCreate главной и пока единственной формы.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
procedure TForm1.FormCreate(Sender: TObject); var DB:TStringlist; // Это список, в который будем загружать данные из SimpleDataSet i:integer; begin /////////Автор кода Пантелеев Станислав, сайт digital-flame.ru //Стартовое подключение к БД with sqlconnection1 do begin Drivername:=‘MySQL’; with params do begin clear; add(‘Hostname=localhost’); add(‘port=3306’); add(‘User_name=root’); add(‘Password=masterkey’); add(‘database=mysql’); end; try connected:=true; except showmessage(‘error’); end; //with end; {Если всё нормально — подключились — начинаем собирать данные...} with simpledataset1 do //Настраиваем Simpledataset… begin DataSet.CommandType:=ctQuery; DataSet.CommandText:=‘SELECT schema_name FROM information_schema.schemata’; end; //Загружаем данные DB:=Tstringlist.Create; // Создали в памяти список SimpleDataSet1.Connection:=sqlconnection1; // подключаем simpledataset… if SimpleDataSet1.Active=false then SimpleDataSet1.Active:=true; SimpleDataSet1.DataSet.Active:=true; SimpleDataSet1.First; // Ставим курсор в начало while not SimpleDataSet1.Eof do begin DB.Add(SimpleDataSet1.FieldByName(‘schema_name’).AsString); // Загрузили в DB одно значение, соответствующее курсору SimpleDataSet1.Next; // перевели курсор на следующую запись… end; for i := 0 to DB.Count—1 do combobox1.Items.Add(DB[i]); combobox1.ItemIndex:=0; DB.Free; // Удалили из памяти список sqlconnection1.Connected:=false; // Расконнектились… //form create end; |
Соответственно обработку кнопки Connect тоже пришлось изменить таким образом, внедрив в неё combobox…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
procedure TForm1.Button1Click(Sender: TObject); begin with sqlconnection1 do begin if connected=true then connected:=false; Drivername:=‘MySQL’; with params do begin clear; add(‘Hostname=’+LabeledEdit1.Text); add(‘port=’+LabeledEdit2.Text); add(‘User_name=’+LabeledEdit3.Text); add(‘Password=’+LabeledEdit4.Text); add(‘database=’+combobox1.Items[combobox1.ItemIndex]); end; try Connected:=true; if connected=true then statusbar1.Panels[0].Text:=‘Connected to ‘+combobox1.Items[combobox1.ItemIndex] except showmessage(‘Error’); statusbar1.Panels[0].Text:=‘Could not connect ‘; end; end; end; |
Ну и под конец, немного разукрасил программу, использовав Alpha Skins…
Теперь введём неправильное значение
Исходники
46 MySQL Connection
Удачи в Ваших проектах. С уважением, Пантелеев Станислав.
Как подключить Delphi к MySQL? не получаеться блин… |
Опции темы |
Rock |
|
||
Опытный Профиль
Репутация: нет
|
Короче, надо чтоб программа работала с MySQL базой данных test на сервере localhost, не получаеться у меня не фига… кто-нить объясните, как и что кидать на форму, какие параметры ставить, чтобы я смог выполнить запрос к этой базе |
||
|
|||
Kesh |
|
||
Эксперт Профиль
Репутация: 3
|
Rock ——————— |
||
|
|||
Rock |
|
||
Опытный Профиль
Репутация: нет
|
А |
||
|
|||
Mal Hack |
|
||
Мудрый… Профиль Репутация: нет
|
Rock |
||
|
|||
Kesh |
|
||
Эксперт Профиль
Репутация: 3
|
Rock .packagesdelphi6ZCore.dpk ——————— |
||
|
|||
Хохол |
|
||
Unregistered
|
Это не проблема подключиться к локальной базе — вы подскажите как подключиться к удаленной базе которая лежит в инете? |
||
|
|||
Mal Hack |
|
||
Мудрый… Профиль Репутация: нет
|
IP или имя хоста, к примеру base.someserver.ru, при этом на base.someserver.ru должен быть разрешен коннект «из вне». |
||
|
|||
TicTak |
|
||
Шустрый Профиль Репутация: нет
|
а можна через адо подключится? а то я пытался, нифига не получается. Если да, то какой драйвер использовать? |
||
|
|||
Mal Hack |
|
||
Мудрый… Профиль Репутация: нет
|
Можно через dbExpress, но он глючит, про ADO ничего не слышал. |
||
|
|||
Cetus |
|
||
Шустрый Профиль Репутация: нет
|
Mal Hack что значит DbExpress глючит? в чем это проявляется? ——————— Легко внести изменения в код.Трудно сделать это корректно. |
||
|
|||
Mal Hack |
|
||
Мудрый… Профиль Репутация: нет
|
Я 7 различных libMySQL.dll переьрал чтобы уж хотя бы подключиться, но при этом ни один запрос не шел.. |
||
|
|||
Cetus |
|
||
Шустрый Профиль Репутация: нет
|
у тебя какой сервер MySQL стоит? LIBMYSQL.DLL 233472 у тебя те же размеры dll’ин? ——————— Легко внести изменения в код.Трудно сделать это корректно. |
||
|
|||
Mal Hack |
|
||
Мудрый… Профиль Репутация: нет
|
Cetus |
||
|
|||
Cetus |
|
||
Шустрый Профиль Репутация: нет
|
значит мне повезло с libmysql.dll я ее на работе нашел, ——————— Легко внести изменения в код.Трудно сделать это корректно. |
||
|
|||
TicTak |
|
||
Шустрый Профиль Репутация: нет
|
У меня про dbExpress вообще кричит, что не может библиотеку найти, хотя всё есть |
||
|
|||
Mal Hack |
|
||
Мудрый… Профиль Репутация: нет
|
Какую именно? И где она у тебя есть? |
||
|
|||
MacTep |
|
||
Эксперт Профиль
Репутация: нет
|
Что это значит? По умолчанию не разрешено? Как сделать так, чтобы с одтельного компа можно было коннектиться к базе данных на другом компе… Что и где нужно разрешить??? ——————— (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг … |
||
|
|||
Anarhist |
|
||
Шустрый Профиль Репутация: нет
|
У меня вот тоже проблема, точнее не проблема а запор. Я вообще не заню как к бызе коннект делать, всю жзниь просидел на 3d графике потом пересел на веб, а вот теперь совмещаю все вместе… Так как че надо сделать? Желатель пошагово, как дл идиота… |
||
|
|||
SergeBS |
|
||
Эксперт Профиль
Репутация: 11
|
Anarhist, |
||
|
|||
fidres |
|
||
Бывалый Профиль Репутация: 1
|
повторюсь, да простит меня модерская братия. библиотеки дбэкспресса предназначены для одной единственной и неповторимой libmysql.dll, которая входила в поставку MySQL 3.2x версий! (при условии, что вы пытаетесь работать со стандартными библиотеками dbExpress’а из 7-ой Delphi!)
третьего не дано! (верней конечно есть альтернатива — это всем известный зевс… правда видал я парочку подобных плюшек… но инсталировать дополнительные копоненты — это IMHO SUXX! причём полный! ;)) ——————— Исправьте ошибку в слове <ХЕРОШО> и я скажу Вам оптимист Вы или пессимист. |
||
|
|||
Likos |
|
||
Новичок Профиль Репутация: нет
|
Извиняюсь за тупость, но у меня почему то не инсталится компонент. Кто-нибудь может объяснить по шагам как его проинсталировать (желательно еще объяснить что куда копировать)? |
||
|
|||
Rodman |
|
||
CIO Профиль
Репутация: 22
|
какой именно? ——————— CRM с функцией АвтоОбзвона Лотереи мира |
||
|
|||
Likos |
|
||
Новичок Профиль Репутация: нет
|
Zeos хочу поставить |
||
|
|||
Deepthroat |
|
||
Новичок Профиль
Репутация: нет
|
Для соединения с MySQL через dbExpress надо использовать libmySQL.dll от того дистрибутива MySQL, к которому надо подключиться. Что касается драйверов dbExpress, то рабочие дрова для 5 версии сервера можно скачать здесь: http://www.crlab.com/dbx. Мне самому проблема соединения попортила много нервов, пока не наткнулся на эти dll’ки… Те дрова, что идут с Delphi не могут работать с новыми серверами. |
||
|
|||
Likos |
|
||
Новичок Профиль Репутация: нет
|
Я хотел не через dbExpress работать. В начале темы люди предлагали использовать набор компонентов ZEOS DBO. Я скачал их, только вот с установкой возникли проблемы. До этого все компоненты, которые ставил, на ура инсталились. А эти что-то не ставятся |
||
|
|||
nefesta |
|
||
Новичок Профиль Репутация: нет
|
В общем устанавливается ZEOS так: 2. В Делфе открываешь в следующем порядке: Папка delphi7 зависит от версии Делфы. 3. В этом же порядке для каждого package нажимаешь Compile, потом Instal. Вроде все. Теперь должно работать. |
||
|
|||
fidres |
|
||
Бывалый Профиль Репутация: 1
|
жуткое дело… ——————— Исправьте ошибку в слове <ХЕРОШО> и я скажу Вам оптимист Вы или пессимист. |
||
|
|||
Anark1 |
|
||
Опытный Профиль
Репутация: 1
|
Чем плох ADO? Наиболее стабильное и универсальное соединение, к тому же в интернете море информации по работе с ADO. ——————— Enjoy yourself, still you can…;) |
||
|
|||
bur |
|
||
Новичок Профиль Репутация: нет
|
Люди добрые, окажите помосч, может кто прислать чисто 2 нужных файла libmysql50.dll и libmysql.dll мне на [email protected] ? |
||
|
|||
skyboy |
|
||
неОпытный Профиль
Репутация: нет
|
насколько мне известно, эти библиотеки входят в состав mysql сервера и ты можешь получить их самостоятельно. |
||
|
|||
bur |
|
||||
Новичок Профиль Репутация: нет
|
sorry, совсем забыл уточнить, мускул у меня развернут на сервере линукс. естественно там нет таких библиотек. зато только что наковырял одну libmysql.dll и коннект будто бы состоялся. буду дальше мучить зеося (или он меня ). |
||||
|
|||||
Rowi |
|
||||
Шустрый Профиль
Репутация: нет
|
Аналогичная проблема: к локальной БД (на Денвере) коннектится без проблем. К БД на сервере в Инете — никак (( . Выдаёт ошибку: Может, надо другой адрес или какой-то конкретный порт указывать? P.S. Использую компоненты Zeos. Это сообщение отредактировал(а) Rowi — 3.3.2013, 13:03 |
||||
|
|||||
Rowi |
|
||
Шустрый Профиль
Репутация: нет
|
Вроде нагуглил, что кроме этого надо ещё создать юзера, который сможет коннектиться с любого хоста, т.к. по умолчанию доступ разрешён только с локальной машины, т.е. для пользователя [email protected]. Это что-то в настройках хостера, или я что-то не так делаю? Терзать техподдержку, или … ? |
||
|
|||
Akella |
|
||||||||||
Творец Профиль
Репутация: 29
|
в cPanel ищи Добавлено через 1 минуту и 21 секунду
возможно, тчо тебя блокирует твой же сетевой экран, особенно если это windows7 Добавлено через 2 минуты и 29 секунд
зайди на сайт http://2ip.ru/ и посмотри свой адрес, укажи его в каКчестве разрешённого в CPanel Добавлено через 3 минуты и 27 секунд
при подключении нужно указывать стандартный порт MySQL сервера: 3306, если, конечно, админы хостинга ничего не меняли Добавлено через 4 минуты и 46 секунд
для чистоты эксперимента, скачай и установи dbForge Studio for MySQL Добавлено через 5 минут и 37 секунд |
||||||||||
|
|||||||||||