|
автор: in_mysql (30.12.2006 в 16:07) |
|
| Приведите плиз небольшой примерчик, как взаимодействовать с MySQL из C++ программы? Например, как вывести версию MySQL, что-то ничего не выходит... | |
|
|
|
|
|
|
|
для: in_mysql
(30.12.2006 в 16:07)
| | Тоже хотел задать этот вопрос в ближайшее время, но уже опередил in_mysql. Так что мы оба ждем ответа | |
|
|
|
|
|
|
|
для: ddhvvn
(30.12.2006 в 17:26)
| | вот пример соединения с базой
#include <my_global.h>
#include <mysql.h>
int main(int argc, char *argv[])
{
// Дескриптор соединения
MYSQL *conn;
// Получаем дескриптор соединения
conn = mysql_init(NULL);
if(conn == NULL)
{
// Если дескриптор не получен - выводим сообщение об ошибке
fprintf(stderr, "Error: can't create MySQL-descriptor\n");
exit(1);
}
// Подключаемся к серверу
if(!mysql_real_connect(conn,
NULL,
"root",
NULL,
NULL,
NULL,
NULL,
0
))
{
// Если нет возможности установить соединение с сервером
// базы данных выводим сообщение об ошибке
fprintf(stderr,
"Error: can't connect to database %s\n",
mysql_error(conn));
}
else
{
// Если соединение успешно установлено выводим фразу - "Success!"
fprintf(stdout, "Success!\n");
}
// Закрываем соединение с сервером базы данных
mysql_close(conn);
}
|
| |
|
|
|
|
|
|
|
для: ddhvvn
(30.12.2006 в 17:26)
| | вот "извлечение версии MySQL-сервера"
// Заголовочные файлы
#include <my_global.h>
#include <mysql.h>
// Прототип функции обработки ошибок
void puterror(char *);
// Главная функция программы1
int main(int argc, char *argv[])
{
// Дескриптор соединения
MYSQL conn;
// Дескриптор результирующей таблицы
MYSQL_RES *res;
// Массив полей текущей строки
MYSQL_ROW row;
// Получаем дескриптор соединения
if(!mysql_init(&conn))
puterror("Error: can't create MySQL-descriptor\n");
// Устанавливаем соединение с базой данных
if(!mysql_real_connect(&conn,
"localhost",
"root",
"",
"shop",
0,
NULL,
0))
puterror("Error: can't connect to MySQL server\n");
// Выполняем SQL-запрос
if(mysql_query(&conn, "SELECT VERSION()") != 0)
puterror("Error: can't execute SQL-query\n");
// Получаем дескриптор результирующей таблицы
res = mysql_store_result(&conn);
if(res == NULL)
{
puterror("Error: can't get the result description\n");
}
// Получаем первую строку из результирующей таблицы
row = mysql_fetch_row(res);
if(mysql_errno(&conn) > 0) puterror("Error: can't fetch result\n");
// Выводим результат в стандартный поток
fprintf(stdout, "Version: %s\n", row[0]);
// Освобождаем память, занятую результирующей таблицей
mysql_free_result(res);
// Закрываем соединение с сервером базы данных
mysql_close(&conn);
}
void puterror(char * str)
{
fprintf(stderr, str);
exit(1);
}
|
| |
|
|
|
|
|
|
|
для: Krasnodar
(31.12.2006 в 02:22)
| | А, собственно, где взять этот mysql.h | |
|
|
|
|
|
|
|
для: ddhvvn
(31.12.2006 в 11:39)
| | mysql.h находится в дистрибутиве MySQL в директории include, кроме того, для клиентской программы потребуется библиотека libmySQL.dll, libmySQL.lib - отладочный и оптмизированный вариант которой можно найти в директории lib дистрибутива. | |
|
|
|
|
|
|
|
для: cheops
(31.12.2006 в 13:02)
| | Ясно. Спасибо! | |
|
|
|
|
|
|
|
для: ddhvvn
(31.12.2006 в 13:02)
| | Поздравляю весь коллектив softtime с Новым 2007 годом за прошлый год вы многим помогли и надеюсь в новом году поможете еще большему кол-ву людей нуждающихся в вашей помощи!
По поводу C++ и Mysql не подкините примерчик обычный как извлекать данные с помощью C++ из таблиц Mysql так и записывать? | |
|
|
|
|
|
|
|
для: sidpr
(01.01.2007 в 18:08)
| | Записывать данные можно при помощи программы
// Заголовочные файлы
#include <my_global.h>
#include <mysql.h>
#include <errmsg.h>
#include <mysqld_error.h>
int main(int argc, char *argv[])
{
// Дескриптор соединения
MYSQL conn;
// Получаем дескриптор соединения
if(!mysql_init(&conn))
{
// Если дескриптор не получен - выводим сообщение об ошибке
fprintf(stderr, "Error: can't create MySQL-descriptor\n");
exit(1);
}
// Устанавливаем соединение с базой данных
if(!mysql_real_connect(&conn,
"localhost",
"root",
"",
"shop",
0,
NULL,
0))
{
// Если соединение не установлено выводим сообщение об ошибке
fprintf(stderr, "Error: %s\n", mysql_error(&conn));
exit(1);
}
// Устанавливаем кодировку соединения, чтобы предотвратить
// искажения русского текста
if(mysql_query(&conn, "SET NAMES 'cp1251'") != 0)
{
// Если кодировку установить невозможно - выводим
// сообщение об ошибке
fprintf(stderr, "Error: can't set character set\n");
exit(1);
}
// Добавляем новый раздел - "Накопители"
if(mysql_query(&conn,
"INSERT INTO catalogs VALUES (NULL,'Накопители')") != 0)
{
// Если добавить запись не получилось - выводим
// сообщение об ошибке
fprintf(stderr, "Error: can't execute INSERT-query\n");
exit(1);
}
// Закрываем соединение с сервером базы данных
mysql_close(&conn);
}
|
| |
|
|
|
|
|
|
|
для: sidpr
(01.01.2007 в 18:08)
| | Извлечь информацию можно при помощи кода
// Заголовочные файлы
#include <my_global.h>
#include <mysql.h>
// Вспомогательная функция для вывода ошибок
void puterror(char *);
// Главная функция программы1
int main(int argc, char *argv[])
{
// Дескриптор соединения
MYSQL conn;
// Дескриптор результирующей таблицы
MYSQL_RES *res;
// Дескриптор строки
MYSQL_ROW row;
// Получаем дескриптор соединения
if(!mysql_init(&conn))
puterror("Error: can't create MySQL-descriptor\n");
// Устанавливаем соединение с базой данных
if(!mysql_real_connect(&conn,
"localhost",
"root",
"",
"shop",
0,
NULL,
0))
puterror("Error: can't connect to MySQL server\n");
// Устанавливаем кодировку соединения, чтобы предотвратить
// искажения русского текста
if(mysql_query(&conn, "SET NAMES 'utf8'") != 0)
puterror("Error: can't set character set\n");
// Выполняем SQL-запрос
if(mysql_query(&conn, "SELECT * FROM catalogs") != 0)
puterror("Error: can't execute SQL-query\n");
// Получаем дескриптор результирующей таблицы
res = mysql_store_result(&conn);
if(res == NULL) puterror("Error: can't get the result description\n");
// Если имеется хотя бы одна запись - выводим
// список каталогов
if(mysql_num_rows(res) > 0)
{
// В цикле перебираем все записи
// результирующей таблицы
while((row = mysql_fetch_row(res)) != NULL)
{
// Выводим результат в стандартный поток
fprintf(stdout, "%s\n", row[1]);
}
}
// Освобождаем память, занятую результирующей таблицей
mysql_free_result(res);
// Закрываем соединение с сервером базы данных
mysql_close(&conn);
}
void puterror(char * str)
{
fprintf(stderr, str);
exit(1);
} |
| |
|
|
|
|
|
|
|
для: cheops
(02.01.2007 в 14:45)
| | Никто не может сюда кинуть mysql.h и в общем файлы для работы с MySQL?
У меня нету их... | |
|
|
|
|
|
|
|
для: bronenos
(29.01.2007 в 11:44)
| | Они входят в состав дистрибутива MySQL, если нет заголовочных файлов, нет и библиотек, нужно просто при установке выбрать режим Custom и отметить галку Developer Components или выбрать режим Complete (полная установка). Скорее всего компонентов разработчика в версии Essential не будет - необходимо использовать полную версию. | |
|
|
|
|
9.1 Кб |
|
|
для: cheops
(29.01.2007 в 13:12)
| | Bronenos, прикрепил.... | |
|
|
|
|
|
|
|
для: Krasnodar
(31.12.2006 в 02:22)
| | Использую Dev-C++ при компеляции выдает:
c:\documents and settings\Администратор\Мои документы\c++\mysqll.o(.text+0x10d):mysqll.cpp: undefined reference to `mysql_init'
c:\documents and settings\Администратор\Мои документы\c++\mysqll.o(.text+0x14c):mysqll.cpp: undefined reference to `mysql_real_connect'
c:\documents and settings\Администратор\Мои документы\c++\mysqll.o(.text+0x179):mysqll.cpp: undefined reference to `mysql_query'
c:\documents and settings\Администратор\Мои документы\c++\mysqll.o(.text+0x1a1):mysqll.cpp: undefined reference to `mysql_store_result'
c:\documents and settings\Администратор\Мои документы\c++\mysqll.o(.text+0x1d4):mysqll.cpp: undefined reference to `mysql_fetch_row'
c:\documents and settings\Администратор\Мои документы\c++\mysqll.o(.text+0x1ee):mysqll.cpp: undefined reference to `mysql_errno'
c:\documents and settings\Администратор\Мои документы\c++\mysqll.o(.text+0x238):mysqll.cpp: undefined reference to `mysql_free_result'
c:\documents and settings\Администратор\Мои документы\c++\mysqll.o(.text+0x24a):mysqll.cpp: undefined reference to `mysql_close'
файлы mysql.h и др. лежат с проектом и в папке include
подскажите что нужно сделать. На С++ тоько начинаю. | |
|
|
|
|
|
|
|
для: 63ru
(30.11.2008 в 12:06)
| | Вы устанавливали libmysql из меню сервис->Проверка обновлений ?
попробовал оттуда , произошла какая-то ошибка, зашёл на devpaks.org, нашёл ссылку
http://prdownloads.sourceforge.net/devpaks/libmysql-5.0.5-1sid.DevPak
~2.3M весом.
Пытается отобразиться как text/html страничкой в вашем браузере, и нужно не кликать по ссылке , а сохранять обьект , юзая контекстное меню ссылки
Установил PackageManager'ом, напихало кучу файлов в bin lib include, examples, docs ... работает
,только пример из папки Dev-Cpp/Examples
слегка отличается
#include <windows.h>
#include <iostream>
#include <mysql/mysql.h>
using namespace std;
int main()
{
//connection params
char *host = "localhost";
char *user = "root";
char *pass = "";
char *db = "";
//sock
MYSQL *sock;
sock = mysql_init(0);
if (sock) cout << "sock handle ok!" << endl;
else {
cout << "sock handle failed!" << mysql_error(sock) << endl;
}
//connection
if (mysql_real_connect(sock, host, user, pass, db, 0, NULL, 0))
cout << "connection ok!" << endl;
else {
cout << "connection fail: " << mysql_error(sock) << endl;
}
//connection character set
cout << "connection character set: " << mysql_character_set_name(sock) << endl;
//wait for posibility to check system/mysql sockets
system("PAUSE");
//closing connection
mysql_close(sock);
return EXIT_SUCCESS;
}
|
| |
|
|
|
|
автор: ktotamcamoetakoe (10.08.2009 в 20:52) |
|
|
для: Krasnodar
(31.12.2006 в 02:22)
| | А как сделать так, чтобы разные запросы находились в разных функциях?
например,
int main()
int connect_to_db() - функция соединения с БД
int get_items() - выборка записей из БД | |
|
|
|
|
|
|
|
для: in_mysql
(30.12.2006 в 16:07)
| | Неполучается у меня работать с mysql при компиляции первого привера выдаются следующие ошибки:
[Linker error] undefined reference to `mysql_init'
[Linker error] undefined reference to `mysql_real_connect'
[Linker error] undefined reference to `mysql_error'
[Linker error] undefined reference to `mysql_close'
ld returned 1 exit status
D:\Doc\VVS\Programing\c++\mysql\Makefile.win [Build Error] [Project1.exe] Error 1
Помогите пожалуйста, компилятор Dev-C++, ОС Windows | |
|
|
|
|
|
|
|
для: vvs
(20.01.2008 в 03:57)
| | хм... у меня не хочет в Builder 6 подключать эти mysql.h и my_global.h
в чем может быть проблема? | |
|
|
|
|
|
|
|
для: ddhvvn
(23.02.2008 в 12:48)
| | Проект консольный или оконный? | |
|
|
|
|
|
|
|
для: cheops
(24.02.2008 в 05:44)
| | Оконный. В этом я уже разобрался (непрально объявлял)!
Теперь вылезают другие ошибки... там уже внутри кода...
В общем как связаться с mysql в оконном приложении в C++ Builder 6? | |
|
|
|
|
|
|
|
для: ddhvvn
(24.02.2008 в 10:38)
| | В оконном варианте лучше использовать специализированные компоненты вроде dbExpress. | |
|
|
|
|
автор: O_o (21.07.2010 в 09:34) |
|
|
для: vvs
(20.01.2008 в 03:57)
| | Проэкт -> Параметры проэкта -> Параметры -> Добавить библиотеку. Здесь находите libmysql.lib и должно все компилиться | |
|
|
|