Programowanie w języku C/C++ » FAQ

MySQL w C

  • 2006-09-17 18:17
  • 7 komentarzy
  • 1351 odsłon
  • Oceń ten tekst jako pierwszy
manual całkowity odnośnie MySQL w C
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] = "[email protected]";  // [email protected] 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).

7 komentarzy

7jojo 2010-04-20 16:15

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


main.o(.text+0x13c):main.cpp: undefined reference to [email protected]'
main.o(.text+0x179):main.cpp: undefined reference to
[email protected]'
main.o(.text+0x28d):main.cpp: undefined reference to [email protected]'
main.o(.text+0x2c5):main.cpp: undefined reference to
[email protected]'
main.o(.text+0x315):main.cpp: undefined reference to [email protected]'
main.o(.text+0x332):main.cpp: undefined reference to
[email protected]'
main.o(.text+0x37b):main.cpp: undefined reference to [email protected]'
main.o(.text+0x396):main.cpp: undefined reference to
[email protected]'
main.o(.text+0x3aa):main.cpp: undefined reference to [email protected]'
main.o(.text+0x3c5):main.cpp: undefined reference to
[email protected]'
main.o(.text+0x473):main.cpp: undefined reference to [email protected]'
main.o(.text+0x486):main.cpp: undefined reference to
[email protected]'
main.o(.text+0x498):main.cpp: undefined reference to [email protected]'
main.o(.text+0x4ae):main.cpp: undefined reference to
[email protected]'
main.o(.text+0x4ea):main.cpp: undefined reference to [email protected]'

zapomnialem666 2008-11-28 18:27

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

pr0 ...

wargo 2008-03-21 12:06

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.

migajek 2006-09-16 20:34

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

coffeinka 2006-09-16 14:30

przepraszam zaraz usune to coś

Oleksy_Adam 2006-09-16 12:39

Artykuł na pewno nie, szybciej gotowiec lub faq

Wolverine 2006-09-16 10:47

Co to jest? Artykul? :/

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