Debian üzerinde MySQL'e erişmek için mysql.h hader dosyasina ihtiyacımız var.
Eger sisteminizde libmysqlclient12-dev kurulu degilse :

# apt-get install libmysqlclient12-dev

komutu ile sisteminize kurun.

Örneğimizde MySQL personel tablosuna bağlanıp tum kayıtları listeleyeceğiz.

personel tablosunda 2 alan var :
- id (int)
- ad (varchar)

Örnek (mysqltest.c):

C++:
  1. #include <mysql/mysql.h>
  2. #include <stdio.h>
  3.  
  4. int main() {
  5. MYSQL *mysql;
  6. MYSQL_RES *sonuc;
  7. MYSQL_ROW sira;
  8. char *SQL;
  9. int t,r;
  10.  
  11. mysql_server_init(0, NULL, NULL);
  12. mysql = mysql_init(NULL);
  13.  
  14. if (mysql_real_connect(mysql,"localhost", "root", NULL, "test", 0, NULL, 0) == NULL) {
  15. printf("MySQL Servera baglanti kurulamadi %s!\n",mysql_error(mysql));
  16. exit(-1);
  17. }
  18. else {
  19. printf("MySQL Baglantisi Kuruldu.\n\n");
  20. }
  21.  
  22. SQL="SELECT * FROM personel";
  23.  
  24. if (mysql_real_query(mysql,SQL,(unsigned int) strlen(SQL) )) {
  25. printf("%s sorgulamada Hata : %s\n",SQL,mysql_error(mysql));
  26. exit(-1);
  27. }
  28. else {
  29. printf("%s basari ile sorgulandi.\n",SQL);
  30. }
  31.  
  32. sonuc=mysql_use_result(mysql);
  33.  
  34. while (sira=mysql_fetch_row(sonuc)) {
  35. for (t=0;t<mysql_num_fields(sonuc);t++) {
  36. printf("%s",sira[t]);
  37. }
  38. printf("\n");
  39. }
  40.  
  41. mysql_close(mysql);
  42. mysql_server_end();
  43. return 0;
  44. }

Derleme İşlemi :
# gcc "mysqltest.c" -lmysqlclient

komutundan sonra ayni dizinde olusacak olan a.out dosyasini #./a.out şeklinde calistirarak sonucu görebilirsiniz.

Çikti :
(benim sistemimdeki çıktı)

ayhan@debian:~/c$ gcc "mysqltest.c" -lmysqlclient
ayhan@debian:~/c$ ./a.out
MySQL Baglantisi Kuruldu.
SELECT * FROM personel basari ile sorgulandi.
1ayhan
2baris

Fonksiyon Açıklamaları :
mysql_server_init()
int mysql_server_init(int argc, char **argv, char **groups
Sunucunun kullandığı ( mysys , InnoDB, vb.) alt sistemleri kullanılır hale getirir. Bu fonksiyon çalıştırılmazsa programınız hata verecetir.

mysql_init()
MYSQL *mysql_init(MYSQL *mysql)
MySql bağlantısını hazırlar.

mysql_real_connect()
MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag)
Makina üzerinde çalışan MySQL sunucusuna bağlanmaya çalışır. Herhangi bir sorgulama işlemi yapmadan önce mysql_real_connect() başarı ile calıştırılmalıdır.

mysql_real_query()
int mysql_real_query(MYSQL *mysql, const char *query, unsigned long length)
SQL sorgusunu çalıştırır. Genel olarak 1 komutla tek bir sorgu çalıştırılmalıdır. Binary veri içeren sorgulamalarda mysql_real_query() kullanılmalıdır.

mysql_use_result()
MYSQL_RES *mysql_use_result(MYSQL *mysql)
Başrı ile gercekleşen her sorgulama işleminden sonra mysql_use_result() fonksiyonu çalıştırılmalıdır. Sorgulamadan gelen verileri kullanmamızı sağlar, işimiz bittiğinde mysql_free_result() fonksiyonu ile o bellek alanını boşaltmamoz gerekir.

mysql_fetch_row()
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
Sorulama sonucunda oluşan veri kümesinden sonucları sıra ile alır. Her çalıştırılışta 1 satır çeker. Herhangi bir sonuç gelmediyse NULL döndürür. Bir satırda kaç alan olduğu mysql_num_fields() fonksiyonu ile bulunabilir.

mysql_num_fields()
unsigned int mysql_num_fields(MYSQL_RES *result)
Sorgulama sonuç kümesinde kaç kolon olduğunu bulmak için kullanılır.

mysql_close()
void mysql_close(MYSQL *mysql)
Aktif bağlntıyı kapatır.

mysql_server_end()
void mysql_server_end(void)
Bu fonksiyon tüm MySQL fonksiyonlarından sonra sadece bir kez caliştirilmalıdır. Tüm alt sitemleri kapatır.

Dökümanı Hazırlayan : Ayhan BARIŞ (20 Temmuz 2005)

>

Cevapla

Son Yazılar :

utf8 general - utf8 turkish

utf8 general ============================================================= Tablo : DROP TABLE IF EXISTS `tt`; CREATE TABLE IF NOT EXISTS `tt` ( `ad` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `tt` (`ad`) VALUES ('istanbul'), [...]

utf8 general - utf8 turkish

utf8 general ============================================================= Tablo : DROP TABLE IF EXISTS `tt`; CREATE TABLE IF NOT EXISTS `tt` ( `ad` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `tt` (`ad`) VALUES ('istanbul'), [...]

utf8 general - utf8 turkish

utf8 general ============================================================= Tablo : DROP TABLE IF EXISTS `tt`; CREATE TABLE IF NOT EXISTS `tt` ( `ad` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `tt` (`ad`) VALUES ('istanbul'), [...]

utf8 general - utf8 turkish

utf8 general ============================================================= Tablo : DROP TABLE IF EXISTS `tt`; CREATE TABLE IF NOT EXISTS `tt` ( `ad` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `tt` (`ad`) VALUES ('istanbul'), [...]

if(5==$deger) yada if ($deger==5)

if(5==$deger) yada if ($deger==5) Sizin de dikkatinizi çekmiştir, Bazı projelerde alıştığımız if şartını ters yazıyorlar; if ($deger==5) yerine if(5==$deger) bu yazımın kaynağı C’den geliyor. = atama. == eşit mi karşılaştırması. C türevi tüm dillerde karşılaştırma operatöri == ‘ dir. Yazılımcılar dalgınlık/unutkanlık ile if’lerde == yerine = (tek eşit) kullanırlarsa büyük bir mantık hatasına ve bug’a sebep olurlar. # root [...]