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

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

27.07.2015, 16:14. Показов 2800. Ответов 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
Ответ Создать тему
Новые блоги и статьи
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru