MySQL w C

coffeinka

manual całkowity odnośnie MySQL w
devpack

#include <windows.h>
#include <iostream>
#include <mysql/mysql.h>
#include <string.h>
using namespace std;
/*
do projektu dołączmy libmysql.a
oraz parametry 
-Wall
-W
*/

/*I typy*/ 
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)*/
        }//else if (my_sql)


/*III połączenie*/
char host[30] = "localhost"; //nazwa serwera do którego chcemy sie podłaczyć
char user[30] = "root";      //użyszkodnik 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;
     }//else if (mysql_real_connect..

/*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)
    system("PAUSE");
    
/*VI koniec */
    mysql_close(my_sql);

    return EXIT_SUCCESS;
}

Jest to napisane w konsoli, ale łatwo da się przerobić na API ;) Program kompilowany w Dev-C++ (+MySQL w wersji 5).

FAQ

7 komentarzy

Próbuje to skompilować, mam problem. Zainstalowałem mysql serwer oraz mysql c++ conector.

main.o(.text+0x13c):main.cpp: undefined reference to mysql_init@4' main.o(.text+0x179):main.cpp: undefined reference to mysql_error@4'
main.o(.text+0x28d):main.cpp: undefined reference to mysql_real_connect@32' main.o(.text+0x2c5):main.cpp: undefined reference to mysql_error@4'
main.o(.text+0x315):main.cpp: undefined reference to mysql_real_query@12' main.o(.text+0x332):main.cpp: undefined reference to mysql_error@4'
main.o(.text+0x37b):main.cpp: undefined reference to mysql_store_result@4' main.o(.text+0x396):main.cpp: undefined reference to mysql_num_fields@4'
main.o(.text+0x3aa):main.cpp: undefined reference to mysql_fetch_row@4' main.o(.text+0x3c5):main.cpp: undefined reference to mysql_fetch_lengths@4'
main.o(.text+0x473):main.cpp: undefined reference to mysql_free_result@4' main.o(.text+0x486):main.cpp: undefined reference to mysql_field_count@4'
main.o(.text+0x498):main.cpp: undefined reference to mysql_affected_rows@4' main.o(.text+0x4ae):main.cpp: undefined reference to mysql_error@4'
main.o(.text+0x4ea):main.cpp: undefined reference to `mysql_close@4'

"(..) a api to jest program windowsowy"

pr0 ...

wolverine, konsola to jest to takie czarne okienko dosowe a api to jest program windowsowy, z okienkami. I można przerobić na jedną z tych dowolnych form.

usuwac nie ma sensu - ma bledy ale daje jakies pojecie o uzyciu libmysql :)

przepraszam zaraz usune to coś

Artykuł na pewno nie, szybciej gotowiec lub faq

Co to jest? Artykul? :/

"jest to napissane w konsoli ale łatwo sie przerobi na api ;) " o_O, co masz na mysli?