URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6985
[ Назад ]

Исходное сообщение
"mysql и c++"

Отправлено Heretic , 28-Ноя-07 23:22 
Добрый день, ALL!
Подскажите как соединиться и сделать запрос из C++ в MySql. Перепробовал уже энное кол-во вариантов, но пока ничего не получается. Если не сложно будет кому-нибудь кинуть или ман на эту тему или выложить код с соединением с базой данных и запросом в нее.
Буду очень признателен. Большое спасибо.

Содержание

Сообщения в этом обсуждении
"mysql и c++"
Отправлено Alu , 29-Ноя-07 11:37 
http://tangentsoft.net/mysql++/doc/html/userman/tutorial.htm...
http://www.codeproject.com/database/mysqlwrap.asp
и много другого в гугле



"mysql и c++"
Отправлено Heretic , 29-Ноя-07 15:54 
>http://tangentsoft.net/mysql++/doc/html/userman/tutorial.htm...
>http://www.codeproject.com/database/mysqlwrap.asp
>и много другого в гугле

Эти 2 сайта я вчера смотрел, но как я понял они используют нестандартную библиотеку, mysql/mysql.h, поэтому я откинул их.


"mysql и c++"
Отправлено AITech , 29-Ноя-07 12:57 
#include "mysql.h"

MYSQL mysql;

int main()
{
  uint id = 0;
  char buf[255];

  if(!mysql_init(&mysql))
     exiterr("can't init DB");

  if (!mysql_real_connect(&mysql, "localhost", "myname", "mypass", "mydb", 0, NULL, 0))
     exiterr("can't connect DB");

  if (mysql_query(&mysql,"INSERT INTO mytable (myfield) VALUES (myvalue)"))
     exiterr("query failed");

  mysql_close(&mysql);
  mysql_library_end();
}


"mysql и c++"
Отправлено AITech , 29-Ноя-07 12:58 
не все ненужное удалил
uint id = 0;
char buf[255];

"mysql и c++"
Отправлено Heretic , 29-Ноя-07 15:57 
Спасибо, идею понял.
Тут в как я понимаю должно быть так include <mysql/mysql.h>, все таки?
вот url что мне подкинули http://www.mysql.ru/webboard/index.html?n1=1151&n2=2 ,может кому пригодится.

"mysql и c++"
Отправлено Heretic , 29-Ноя-07 17:22 
Дошел до следующего момента

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include "mysql.h"

MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;

void exiterr(int exitcode)
{
fprintf(stderr, "%s\n", mysql_error(&mysql));
exit(exitcode);
}

int main()
{
uint i = 0;
if(!mysql_init(&mysql))
     exiterr(1);
    
if (!(mysql_real_connect(&mysql,"localhost","root","secret","",0,NULL,0)))
exiterr(1);
if (mysql_select_db(&mysql,"egroupware")) exiterr(2);
if (mysql_query(&mysql,"SELECT * FROM egw_accounts"))
exiterr(3);
if (!(res = mysql_store_result(&mysql))) exiterr(4);

while ((row=mysql_fetch_row(res))) {
int z = mysql_num_fields(res);
std::cout << z << "\n";
    for (i=0 ; i < 2; i++) {
        std::cout << row[i] << "\n";
//      std::cout << "test" << "\n";
    }
}
if (!mysql_eof(res)) exiterr(5);
mysql_free_result(res);
mysql_close(&mysql);
}

int z = mysql_num_fields(res);
std::cout << z << "\n";
В этом месте ^^^^^^^^^^^^^^^^^^ программа выдает 12 столбцов, а в базе всего 2.
Подскажите что я не правильно делаю.
ЗЫ: C++ только учу, не пинайте сильно ногами =))))
Спасибо.