C++ & MySQL
Astronom 06 Jul 2007 19:10
Znalazłem w necie taki fragment kodu
#include <iostream>
#include <mysql/mysql.h> // Potrzebny jest nam zainstalowany pakiet libmysqlclient-devel w systemie zawierający bibliotekę mysql.h
#include <string.h>
using namespace std;
int main()
{
MYSQL* my_sql; //reprezentuje połaczenie do bazy danych
MYSQL_RES* res; //zmienna reprezentujaca dane odebrane
MYSQL_ROW row, end_row; //zmienne reprezentujaca wersy
/*II inicjacja polaczenia*/
my_sql=mysql_init(my_sql);
if (my_sql)
{
cout << "ok!" << endl;
}
else
{
cout << "!ok!" << mysql_error(my_sql) << endl;
/*funkcja mysql_error() zwraca wiadomosc o błedzie(ostatnim)*/
/*funkcja mysql_errno() zwraca kod błędu(ostatniego)*/
}
/*III połączenie*/
char host[30] = "localhost"; //nazwa serwera do którego chcemy sie podłaczyć
char user[30] = "root"; //uzytkownik którym sie chcemy podłaczyć
char pass[30] = "P@ssw0rd"; // H@sl0 użyskodnika którym sie chcemy podłaczyć
char db[30] = "test"; //baza do której chcemy sie podłaczyć jesli pusto to
//podłaczy nas do domyślnej lub zadnej
// w sql używamy komendu "use nazwa_bazy;"
if (mysql_real_connect(my_sql, host, user, pass, db, 0, NULL, 0))
{
cout << "ok!" << endl;
}
else
{
cout << "!ok!: " << mysql_error(my_sql) << endl;
}
/*IV*/
long ret;
// select url from tescik limit 1; = wybierz pola "url" z taleli tescik ograniczajac sie do 1 wyniku
ret = mysql_real_query(my_sql, "select url from tescik limit 1;",strlen("select url from tescik limit 1;"));
if (ret != 0)
{
cout<<"!ok!"<< mysql_error(my_sql);
}//if (ret != 0)
else
{
cout<<"ok!";
/*V to co mysql_real_query zostawi po sobie */
res = mysql_store_result(my_sql); // przypisanie danych pobranych czy coś takiego
if (res)
{
unsigned int num_fields;
num_fields = mysql_num_fields(res); // liczba pol w wersie;
while ( (row = mysql_fetch_row(res)) )
{
unsigned long *lengths;
lengths = mysql_fetch_lengths(res);
// odbieranie
unsigned int i;
for(i = 0; i < num_fields; i++)
{
printf("[%.*s] ", (int) lengths[i], row[i] ? row[i] : "NULL");// wyswietla nr oraz zawartosc
}//for(i = 0; i < num_fields; i++)
printf("\n");
mysql_free_result(res); // zwalnia pamieć zajeta przez res
}//while ( (row = mysql_fetch_row(res)) )
}//if (res)
else
{
if (mysql_field_count(my_sql) == 0)
ret = mysql_affected_rows(my_sql);
else
cout<<"!ok!"<<mysql_error(my_sql);
}//else if (res)
}//else if (ret != 0)
/*VI koniec */
mysql_close(my_sql);
return 0;
}
Ale nie mogę go odpalić niestety ;(
MySQL odpalony jest:
#mysql —version
mysql Ver 14.12 Distrib 5.0.41, for pc-linux-gnu (i686) using readline 5.1
#/etc/init.d/mysql start
#
Przeglądałem trochę dokumentację z http://dev.mysql.com/doc
Może ktoś wie co i jak się takie połączenia nawiązuje?