Debian üzerinde MySQL'e erişmek için mysql.h hader dosyasina ihtiyacımız var. Eger sisteminizde libmysqlclient12-dev kurulu degilse :
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):
int main() { MYSQL *mysql; MYSQL_RES *sonuc; MYSQL_ROW sira; char *SQL; int t,r; mysql_server_init(0, NULL, NULL); mysql = mysql_init(NULL); if (mysql_real_connect(mysql,"localhost", "root", NULL, "test", 0, NULL, 0) == NULL) { printf("MySQL Servera baglanti kurulamadi %s!\n",mysql_error(mysql)); exit(-1); } else { printf("MySQL Baglantisi Kuruldu.\n\n"); }
SQL="SELECT * FROM personel";
if (mysql_real_query(mysql,SQL,(unsigned int) strlen(SQL) )) { printf("%s sorgulamada Hata : %s\n",SQL,mysql_error(mysql)); exit(-1); } else { printf("%s basari ile sorgulandi.\n",SQL); }
sonuc=mysql_use_result(mysql);
while (sira=mysql_fetch_row(sonuc)) { for (t=0;t<mysql_num_fields(sonuc);t++) { printf("%s",sira[t]); } printf("\n"); }
mysql_close(mysql); mysql_server_end(); return 0; } Derleme İşlemi :
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.