Евгений Загородний
Использование MySQL C API в среде KDevelop 
Как известно, связь с MySQL из PHP затруднений не вызывает.Однако если необходимо провести ресурсоемкие вычисления, основанные на содержимом БД, PHP может оказаться непроизводительным.
В C/C++ встроенной поддержки MySQL нет, поэтому для получения доступа к базе данных необходимо подключить библиотку mysqlclient, которая (к счастью) распостраняется вместе с MySQL.
Предполагается, что имееются установленные FreeBSD, MySQL и KDE c KDevelop.
У меня MySQL установлен в /usr/local/mysql, и именно этот путь я буду использовать здесь. Если у вас MySQL находится в другом месте – просто используйте соответствующие пути.
Итак, по пунктам.
Создаем новый проект
В KDevelop для наших целей подходит шаблон С++ Simple Hello world program.(Project -> New project..., выбираем из дерева C++ -> Simple Hello world program.)
Добавляем путь к библиотеке в конфигурации проекта
Открываем Project -> Porject Options..., на вкладке Configure Options в поле Linker Flags (LDFLAGS) добавляем следующее:-L/usr/local/mysql/lib/mysql
Подключаем библиотеку mysqlclient
Заходим в Automake Manager, он вызывается кнопкой из вертикального ряда справа.Открываем окошко опций проекта: правая кнопка на src -> Options...
Во вкладке Compiler в поле Compiler flags for C++ compiler (CXXFLAGS) добавляем:
-lmysqlclient
Замечание: если создавался не проект не C++, а C, то добавлять эту строку нужно в другое поле.
Задаем путь к header-файлу
В том же окне (Subproject Options for 'src'), во вкладке Includes нажимаем Add... возле нижнего поля, и вводим-l/usr/local/mysql/includes/mysql
Готово!
Теперь можно смело подключать mysql.h и пользоваться функциями MySQL C API. Их подробное описание есть в соответствующем разделе документации по MySQL.Вот самый простой пример.
#include <cstdlib>
#include <iostream>
#include <mysql.h>
using namespace std;
int main() {
mysql_server_init(0, NULL, NULL);
MYSQL* db = mysql_init(NULL);
mysql_real_connect(db, "localhost", "root", "password", "db_name", 0, NULL, 0);
// ...здесь делаем с базой данных все, что понадобится
mysql_query(db, "SELECT * FROM table_name");
MYSQL_RES* result = mysql_store_result(db);
MY_SQL_ROW row = mysql_fetch_row(result);
//row - массив, содержащий значения полей записи
cout << "1st row, 1st field: " << row[0];
// и т. д...
mysql_close(db);
mysql_server_end();
return EXIT_SUCCESS;
}Ссылки
Последние комментарии:
| Материал | smitt |
|---|---|
| Исключительно полезен) | |
| nikita | |
|
Ошибка в коде небольшая: Нужно: MYSQL_ROW row = mysql_fetch_row(result); вместо MY_SQL_ROW row = mysql_fetch_row(result); |
|
| Zag | |
|
Один из примеров – «обучение» алгоритма категоризации, т. е. алгоритма, который для разных текстов выбирает из множества известных категорий одну – ту, к которой этот текст больше всего подходит. «Обучение» таких алгоритмов представляет собой следующее: задается выборка текстов, для каждого из которых уже известна категория, к которой он относится. Все эти тексты по очереди «скармливаются» обучающему алгоритму, и каждый из них определенным образом изменяет численные характеристики, которые будут в дальнейшем использоваться для категоризации. Собственно, процесс подсчета этих численных характеристик и есть ресурсоемким (учитывая большое количество текстов на входе). |
|
| Роман | |
|
А можно попросить привести пример ресурсоемких вычислений, основанных на содержимом БД, для которых PHP может оказаться непроизводительным. Спасибо. |
|
Обсудить (комментариев: 4)


