Debian MySQL C Programlamaya Giriş

Debian Türkiye sitesinden

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

  1. 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):

  1. include <mysql/mysql.h>
  2. include <stdio.h>

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 :

  1. 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.