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):
-
#include <mysql/mysql.h>
-
#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 :
# 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)
Entries (RSS)