Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
81 / 25 / 19
Регистрация: 27.10.2014
Сообщений: 420

Подключение MySQL БД

27.07.2015, 16:14. Показов 2754. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Первый раз решил попробовать подключить БД к Билдеру. Скачал и установил mysql connector odbc. Создал пользовательский источник данных, в Билдере кинул на форму ADOConnection, добавляю созданный источник данных и результат на скрине.
ОС 64 и драйвер тоже...
Миниатюры
Подключение MySQL БД  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.07.2015, 16:14
Ответы с готовыми решениями:

Подключение к БД MySQL. Xamarin Studio: C#-PHP-MySQL
Здравствуйте! Необходимо реализовать подключение к удаленной БД MySQL. Пишу Android-приложение в Xamarin Studio на C#. Хочу сделать...

Подключение к БД MySQL. Xamarin Studio: C#-PHP-MySQL
Здравствуйте! Возникла проблема подключения к удаленной БД MySQL. Пишу Android-приложение в Xamarin Studio на C#. Хочу сделать...

Подключение к mysql
Установил Denwer, создал БД, таблицы в ней и пользователя user-name задал пользователю пароль user-pwd, дал пользователю грант на SELECT,...

8
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
28.07.2015, 16:53
Поделюсь опытом. Я не использовал ни ODBC, ни ADO, - вообще никаких компонентов, относящихся к базе данных. Использовал только рекомендуемую многими библиотеку libmysql.dll (подключил к проекту и организовал все запросы к базе через её функции). Прекрасно всё работает; создаются и удаляются базы мизинцем левой руки, даже саму либу я не таскаю с программой (хотя тоже возможно; это всего лишь 250 кб), а "беру напрокат". (Версия 4.0.20).
1
81 / 25 / 19
Регистрация: 27.10.2014
Сообщений: 420
28.07.2015, 19:01  [ТС]
Цитата Сообщение от nick42 Посмотреть сообщение
Поделюсь опытом. Я не использовал ни ODBC, ни ADO, - вообще никаких компонентов, относящихся к базе данных. Использовал только рекомендуемую многими библиотеку libmysql.dll (подключил к проекту и организовал все запросы к базе через её функции). Прекрасно всё работает; создаются и удаляются базы мизинцем левой руки, даже саму либу я не таскаю с программой (хотя тоже возможно; это всего лишь 250 кб), а "беру напрокат". (Версия 4.0.20).
Очень интересно...
А есть статья на эту тему?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
28.07.2015, 19:20
Цитата Сообщение от valeriy007 Посмотреть сообщение
есть статья на эту тему?
Покопавшись в архивах, нашел пару текстов. Не уверен, что всё здесь верно, но для начала сгодится. Прежде всего вам следует убедиться, что на вашей платформе, да ещё с 64 битами это сработает. Поэтому следуйте самой примитивной логике. Если получится создать хотя бы одну таблицу с минимумом полей - это успех.
Вот здесь заметка с какого-то форума (может и с этого)...
Кликните здесь для просмотра всего текста

Вот тоже с какого-то форума.
//**************************************** ********** ****
Покопавшись на программерских форумах и форуме MySQL мне удалось таки собрать
достаточно информации, чтобы наконец подключиться к MySQL серверу без всяких ADO,
ODBC. Ни для кого не секрет, что для того, чтобы ваша программа заработала на
другой машине - нужно настраивать DSN в ODBC, а для MySQL сервера на эту машину
еще нужно поставить специальный компонент. Можно конечно включить инструкцию для
пользователя как настраивать DSN, а также включить тот самый MySQL ODBC драйвер
и наверно это будет неплохо в случае, если вы решили заработать денег на тех.поддержке.
Далее идет инструкция "Step By Step", все манипуляции проделывались на BCB6.0.
Для начала нужно скачать сам MySQL. Мой архив назывался так: mysql-noinstall-6.1.7-beta-win32
(у вас наверно будет поновее). Убедитесь, что вы запустили и настроили MySQL
сервер, а также имеете права администратора на нем
Начнем.

1. Копируем файл из папки lib\opt:
libmysql.dll
в отдельную папку - for_bcb\lib
2. Запускаем командную строку (cmd), переходим в папку где лежит implib:
c:\>n:
n:\>cd N:\Program Files\Borland\CBuilder6\Bin
n:\Program Files\Borland\CBuilder6\Bin>implib -c I:\for_bcb\lib\opt\libmysql.lib
I:\for_bcb\lib\opt\libmysql.dll

3. Копируем папку include в папку for_bcb, находим строку:
#define my_socket SOCKET в файле config-win.h
и меняем ее на:
#define my_socket UINT_PTR
4. Создаем новый проект.
5. Кидаем на форму Button1 и ListView1.
6. Ставим свойство ListView1
ViewStyle = vsReport.
7. Жмем Shift+F11 (Project->Add To Project).
Выбираем Files of Type->lib, переходим в директорию for_bcb\lib
и выбираем файл libmysql.lib.
8. Жмем Ctrl+Shift+F11 (Project->Options). Выбираем вкладку "Directories/Conditional".
Жмем на кнопки с тремя точками в Include Path и Library Path.
В Include Path выбираем директорию for_bcb\include. В Library Path for_bcb\lib.
9. Сохраняем проект.
10. Добавляем две строчки в исходнике (F12):

Код:
C++
1
2
3
4
5
6
7
8
9
10
11
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#define __LCC__ // эту и
#include <mysql.h> // эту
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
Копируем for_bcb\lib\libmysql.dll в папку куда будет сохраняться
скомпилированный
exe файл (обычно в той же директории что и файлы проекта, если речь не о BDS2006)

//--------------------------------------------------------------------------------------------------------------------------------
Библиотеку libmysql.dll возьми в (mysql)\lib\opt
Сделай libmysql.lib:
C++
1
implib libmysql.lib libmysql.dll
В проекте подключи её

В mysql.h найди:
C++
1
2
3
4
5
#ifdef __WIN__ 
#define my_socket SOCKET 
#else 
typedef int my_socket; 
#endif
Удали эти строки кроме
C++
1
typedef int my_socket;
А дальше как обычно...
//--------------------------------------------------------------------------------------------------------------------------
А здесь короткий пример...
Кликните здесь для просмотра всего текста
//---------------------------------------------------------------------------

C++
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
#include <vcl.h>
#pragma hdrstop
 
#include "MySQLpmain.h"
#define __LCC__
#include <mysql.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
MYSQL *Con;
MYSQL_RES *Res;
MYSQL_ROW Row;
MYSQL_FIELD *Fields;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Con=mysql_init(Con);
Con=mysql_real_connect(Con,"localhost","root","123 456","mysql",0,NULL,0);
if(!Con) ShowMessage("Can not connect.");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (Con){
ListView1->Items->BeginUpdate();
ListView1->Clear();
AnsiString query="SELECT * FROM `mysql`.`db`;"; // magic string 
mysql_real_query(Con,query.c_str(),query.Length()) ;
int f=mysql_errno(Con);
if(f==0){
Res=mysql_store_result(Con);
int CountOfColumns=mysql_num_fields(Res);
Fields=mysql_fetch_fields(Res);
for(int i=0;i<CountOfColumns;i++){
ListView1->Columns->Add();
ListView1->Columns->Items[i]->Caption = Fields[i].name;
}
while ((Row = mysql_fetch_row(Res))){
TListItem *ListItem = ListView1->Items->Add();
for(int j=0;j<CountOfColumns;j++){
if (j == 0){
ListItem->Caption = Row[j];
}else{
ListItem->SubItems->Add(Row[j]);
}
}
}
ListView1->Items->EndUpdate();
}else{
ShowMessage("Error #: " + IntToStr(f) + char(13) + "Message: " + mysql_error(Con));
}
}
}
//---------------------------------------------------------------------------
//**************************************** *********************************
1
98 / 10 / 0
Регистрация: 21.02.2011
Сообщений: 474
29.07.2015, 23:24
спасибо за совет. Интересно. Тем не менее могу написать подробно как прицепить БД через ADO.
Это не сложно.
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
30.07.2015, 08:37
Цитата Сообщение от newline Посмотреть сообщение
могу написать подробно как прицепить БД через ADO
Было бы очень кстати, на мой взгляд. Я, например, до сих пор не представляю: вот если я таким образом напишу программу, в которой будут функции создания базы и работы с ней... - достаточно ли будет просто работающей службы mySql на другой машине, чтоб моя программа там работала, или потребуются еще какие-то действия?
0
81 / 25 / 19
Регистрация: 27.10.2014
Сообщений: 420
30.07.2015, 09:41  [ТС]
Цитата Сообщение от newline Посмотреть сообщение
Тем не менее могу написать подробно как прицепить БД через ADO.
Напиши, если не трудно. Хотя моя проблема не решилась, у меня если драйвер х64 ставлю, выше скрин как результат, если переставляю х32 в источнике данных ODBC их просто нет. ОС у меня сама х64, думал может потому что программу пишу под х32, поменял, результат тот-же.
0
98 / 10 / 0
Регистрация: 21.02.2011
Сообщений: 474
04.08.2015, 21:30
Ура. Наконец то пришла по почте клавиатура с Кирилицей. Теперь можно текст набирать не особо напрягаясь стирать очепятки. Итак. Обещанный обзор подключения БД под MSSQL к оконному проекту в embarcadero/билдере. Кстати существует (если кто не знал) вполне заслуживающий внимания способ использовать возможности MSSQL на чем угодно, на приложении под абсолютно любую ОС. Называется SQLLite. Само приложение в данном случае является и сервером и клиентом одновременно. Об этом можно почитать позже. А пока...
1. В SQL Server Management Studio создается новая БД, или присоединяется имеющаяся. Задаются права доступа к ней. Логин и пароль надо запомнить - для подключения БД к приложению понадобится. Как вариант можно просто поставить галочку - авторизация учетной записью Windows. Приложение присоединится если расположено локально.
2. На форму приложения следует поместить следующие компоненты -
а. ADOConnection - инструмент подключения к серверу БД. Для подключения необходимо сформировать Connection String. Это не сложно. Connection String -> build (в появившемся окне выбираем сервер, способ аутентификации и конкрктную базу данных). Нажимаем test connection, все в порядке? Строка и подключение сформированы. Чтобы постоянно при запуске не требовало пароля снимите флажок с Login Promt.
б. ADOTable - инструмент подключения к определенной таблице в БД. Их ведь может быть много. Ничего сложного в этом нет. В параметрах задается Connection - ADOConnection. Использует созданное нами на предыдущем этапе подключение. Разумеется еще раз формировать строку ни к чему. Будет использована строка из ADOConnection. Далее надо выбрать определенную таблицу. Это делается в свойствах объекта TableName - необходимая таблица из выпадающего меню. Для активации необходимо поставить флажок Active - >true. Так же позволяет фильтровать БД, упорядочивать, искать значения. В коде программы добавляется чтото вроде
C++
1
2
Form6->ADOTable1->Filter = Фильтр;
    Form6->ADOTable1->Filtered=true;
в. DataSource - будем юзать для всякой навигации и отображения БД в приложении. Особо думать не о чем - DataSet=DataTable, Enabled=True.
г. DBGrid. Всегда приятно видеть живую таблицу на экране. Для этого и нужен DBGrid. Собственно надо выбрать Data Source=DataSource и поставить Enabled=True. Шрифты и внешний вид можете настраивать исходя из собственных предпочтений.
д. DBNavigator - для просмотра/редактирования вашей таблицы. Подключается аналогично DBGrid, набор кнопок редактируется, как и внешний вид. Наслаждайтесь.
0
3 / 3 / 3
Регистрация: 02.06.2013
Сообщений: 16
05.08.2015, 16:33
MSSQL и MySQL - разные СУБД.
Для подключения к MySQL можно использовать компонент FireDac, если у вас XE5 и выше.
Скачать последнюю версию libmysql.dll и кинуть в папку с прогой.

Файл libmysql.dll скопировать в:
- c:\Windows\System32\

и если винда х64, то в:
- c:\Windows\SysWOW64\

Попробовал - коннектится, но особо не юзал.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.08.2015, 16:33
Помогаю со студенческими работами здесь

Подключение к mysql
Здравствуйте, какой самый лучший способ подключения к mysql и вывод данных? На многих сайтах делают по разному, нет единого стандарта....

Подключение MySQL к C++
Вот есть статья: http://articles.org.ru/cn/showdetail.php?cid=6810. Я по ней пытался подключить MySQL к C++, но там есть строчка:&quot;Если...

Подключение к MySQL
Если я создаю базу данных MySQL на сервере. Сервер написан на С++. И как мне сделать так чтобы к этой базе данных можно было обращаться и...

Подключение к MySQL
Как подключиться к базе MySQL, которая находится на локальном компьютере? Ну, или на каком-то сайте.

Подключение к MySQL
Я подключался к MySQL с помощью MySQL Connector'a, но мне препод сказал, для универсальности использовать какой-то драйвер. Может ли...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru