Песочница →
            Подключение и работа с MySQL в среде Visual C++
        
                    
            
                
      Совсем недавно мне необходимо было написать программу для удаленной работы с мускулом. В интернете, как не обидно, нашел лишь «скачайте бла-бла, подключите через include, и вот пример!». На практике не сработало, пришлось искать специалистов чтоб объяснили. Для исправления этого досадного отсутствия информации, выложу полное описание от «А» до «Я» по настройке и работе в среде Visual C++. Итак, приступим!
Для того что бы подключить БД, такую как мускул, и играться с ней на чистом API, нужно сначала установить или что бы было установлено такое ПО:
1. «Connector/C++»для 32-х розрядного приложения 32-х розрядный набор библиотек, а для 64-х соответственно 64-х битный набор (скачать можно здесь http://dev.mysql.com/downloads/connector/cpp/ ).
2. Дистрибутив мускула, у меня стоит MySQL Community Server 5.1.59 при установке нужно выбрать либо полную установку, либо выбрать самому весь набор, ну для разработки хватит набора DevCpp.
Теперь, у нас есть все библиотеки нужные для создания программы на Visual C++. Далее мы проверяем структуру наших директорий сервера мускула. У меня сервер установлен в D:\программирование\MySQL Server 5.1. Директория может быть произвольной, но в ней обязательно должны присутствовать папки include и lib. Далее копируем все файлы из C:\Program Files\MySQL\MySQL Connector C++ 1.1.0\lib\opt (папка с установленным коннектором) в D:\программирование\MySQL Server 5.1\lib\opt (папка с сервером).
Перекидывания файлов окончены, теперь настроим сам С++:
1. Открываем Visual C++, создаем стандартный консольный проект, сохраняем в любое удобное место.
2. Обязательно (!!!) выбираем режим постройки проекта Release. Если выбрать стандартный Debug, то нужно файлы сохранять в другие директории.
3. Открываем свойства проекта (в окне обозревателя решений правой кнопкой по проекту — свойства).
4. Выбираем «Свойства конфигурации — С/С++ — Общие — Дополнительные каталоги включаемых файлов», добавляем каталог include из папки с сервером (в моем случае D:\программирование\MySQL Server 5.1\include).
6. В свойствах проекта выбираем пункт «Свойства конфигурации — С/С++ — Компоновщик — Общие — Дополнительные каталоги библиотек», добавляем каталог lib/opt (в моем случае D:\программирование\MySQL Server 5.1\lib\opt).
7. В свойствах проекта выбираем пункт «Свойства конфигурации — С/С++ — Компоновщик — Ввод — Дополнительные зависимости», добавляем 2 значения mysqlcppconn-static.lib и libmysql.lib.
8. В свойствах проекта выбираем пункт «Свойства конфигурации — С/С++ — Препроцессор — Определения препроцессора», добавляем значение CPPCONN_PUBLIC_FUNC=.
9. Сохраняем свойства проекта.
Далее все, что остается это дописать в проект #include<mysql.h>, и можно работать!
Вот 2 простых примера работы с мускулом:
Тест подключения к БД
Вывод на экран данных из таблицы
        
        Для того что бы подключить БД, такую как мускул, и играться с ней на чистом API, нужно сначала установить или что бы было установлено такое ПО:
1. «Connector/C++»для 32-х розрядного приложения 32-х розрядный набор библиотек, а для 64-х соответственно 64-х битный набор (скачать можно здесь http://dev.mysql.com/downloads/connector/cpp/ ).
2. Дистрибутив мускула, у меня стоит MySQL Community Server 5.1.59 при установке нужно выбрать либо полную установку, либо выбрать самому весь набор, ну для разработки хватит набора DevCpp.
Теперь, у нас есть все библиотеки нужные для создания программы на Visual C++. Далее мы проверяем структуру наших директорий сервера мускула. У меня сервер установлен в D:\программирование\MySQL Server 5.1. Директория может быть произвольной, но в ней обязательно должны присутствовать папки include и lib. Далее копируем все файлы из C:\Program Files\MySQL\MySQL Connector C++ 1.1.0\lib\opt (папка с установленным коннектором) в D:\программирование\MySQL Server 5.1\lib\opt (папка с сервером).
Перекидывания файлов окончены, теперь настроим сам С++:
1. Открываем Visual C++, создаем стандартный консольный проект, сохраняем в любое удобное место.
2. Обязательно (!!!) выбираем режим постройки проекта Release. Если выбрать стандартный Debug, то нужно файлы сохранять в другие директории.
3. Открываем свойства проекта (в окне обозревателя решений правой кнопкой по проекту — свойства).
4. Выбираем «Свойства конфигурации — С/С++ — Общие — Дополнительные каталоги включаемых файлов», добавляем каталог include из папки с сервером (в моем случае D:\программирование\MySQL Server 5.1\include).
6. В свойствах проекта выбираем пункт «Свойства конфигурации — С/С++ — Компоновщик — Общие — Дополнительные каталоги библиотек», добавляем каталог lib/opt (в моем случае D:\программирование\MySQL Server 5.1\lib\opt).
7. В свойствах проекта выбираем пункт «Свойства конфигурации — С/С++ — Компоновщик — Ввод — Дополнительные зависимости», добавляем 2 значения mysqlcppconn-static.lib и libmysql.lib.
8. В свойствах проекта выбираем пункт «Свойства конфигурации — С/С++ — Препроцессор — Определения препроцессора», добавляем значение CPPCONN_PUBLIC_FUNC=.
9. Сохраняем свойства проекта.
Далее все, что остается это дописать в проект #include<mysql.h>, и можно работать!
Вот 2 простых примера работы с мускулом:
Тест подключения к БД
#include "stdafx.h"
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include<mysql.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
 MYSQL *conn;
 // Получаем дескриптор соединения
 conn = mysql_init(NULL);
 if(conn == NULL)
 {
 // Если дескриптор не получен – выводим сообщение об ошибке
 fprintf(stderr, "Error: can'tcreate MySQL-descriptor\n");
 //exit(1); //Если используется оконное приложение
 }
 // Подключаемся к серверу
 if(!mysql_real_connect(conn, "localhost", "root", "root", "test", NULL, NULL, 0))
 {
 // Если нет возможности установить соединение с сервером 
 // базы данных выводим сообщение об ошибке
 fprintf(stderr, "Error: can'tconnecttodatabase %s\n", mysql_error(conn));
 }
 else
 {
 // Если соединение успешно установлено выводим фразу - "Success!"
 fprintf(stdout, "Success!\n");
 } 
 // Закрываем соединение с сервером базы данных
 mysql_close(conn);
system("Pause");
 return 0;
}Вывод на экран данных из таблицы
#include"stdafx.h"
#include#include<conio.h>
#include<stdlib.h>
#include<mysql.h>
usingnamespacestd;
int_tmain(intargc, _TCHAR* argv[])
{
system("cls");
MYSQL *conn;
 MYSQL_RES *res;
 MYSQL_ROW row;
int i = 0;
// Получаем дескриптор соединения
 conn = mysql_init(NULL);
 if(conn == NULL)
 {
 // Если дескриптор не получен – выводим сообщение об ошибке
 fprintf(stderr, "Error: can'tcreate MySQL-descriptor\n");
 //exit(1); //Если используется оконное приложение
 }
 // Подключаемся к серверу
 if(!mysql_real_connect(conn, "localhost", "root", "root", "test", NULL, NULL, 0))
 {
 // Если нет возможности установить соединение с сервером 
 // базы данных выводим сообщение об ошибке
 fprintf(stderr, "Error: can'tconnecttodatabase %s\n", mysql_error(conn));
 }
 else
 {
 // Если соединение успешно установлено выводим фразу - "Success!"
 fprintf(stdout, "Success!\n");
 }
mysql_set_character_set(conn, "utf8");
 //Смотрим изменилась ли кодировка на нужную, по умалчанию идёт latin1
cout<<"connectioncharacterset: "<<mysql_character_set_name(conn) <<endl;
mysql_query(conn,"SELECT id, text FROM mnu"); //Делаем запрос к таблице по имени МНУ =)
if (res = mysql_store_result(conn)){
 while(row = mysql_fetch_row(res)) {
 for (i=0 ; i <mysql_num_fields(res); i++){
 std::cout<<row[i] <<"\n"; //Выводим все что есть в базе через цикл
 }
 }
 } elsefprintf(stderr, "%s\n", mysql_error(conn));
// Закрываем соединение с сервером базы данных
 mysql_close(conn);
system("Pause");
return 0;
}
P. S. Спасибо Владимиру Будило за разъяснение темы, эта статья вышла благодаря его объяснениям.
  		
            
    
      31.10.2011 14:38+0400
    
        
            
            
            
        