C programlama dilinde MySQL veritabanını sorgulamak kimilerine zor gelebilir
.Aslında bilinmesi gereken MySQL veritabanının C üzerindeki prosedürleridir.
Bu kaynak bu prosedürlerin en basite indirgenmiş halini kapsamaktadır.
Öncelikle 'C' programlama dilinde MySQL veri tabanını kullanabilmemiz için sistemimizde MySQL bileşenlerinin tanımlanmış olması gerekir.
MySQL bileşenleri mysqlclient kütüphanesi içerisinde yer alır.Bu sebeple standart bir derleme işlemi yapamayız. Bunun için derlemeyi yapacak olan gcc komutumuza "-lmysqlclient" takısını eklememiz gerekiyor.Örnek verecek olursak:
gcc sql.c -lmysqlclient -o sql
İşte başlıyoruz..
Kod:
#include <stdio.h>
#include <string.h>
#include <sys/time.h>
#include <mysql/mysql.h>
İlk olarak bize gerekli olan başlık dosyalarımızı programımıza ekliyoruz.Burda size yabancı
gelebilecek olan "mysql.h" başlık dosyasıdır.Sistemimizde bulunan MySQL bileşenlerini ve gerekli
fonksiyonları bu dosya ile programımıza atamış oluyoruz.Diğer başlık dosyaları standart 'C' kütüphaneleridir.
Kod:
MYSQL *mysql;
Bu satırda veritabanına bağlanırken kullanacağımız değişkeni tanımlıyoruz.
MYSQL_RES *result;
Bu satır sorgudan sonra sonuçları kullanabilmemiz için sahip olmamız gereken değişkeni tanımlıyoruz.
MYSQL_ROW row;
mysql_fetch_row fonksiyonu ile satırlar halinde aldığımız sonuçları kullanabilmek
için bu tipte bir değişkene ihtiyacımız vardır.
MYSQL *connection;
Bu değişkenimizi, bağlantıyı gerçekleştirmek aynı zamanda hata yakalamak için kullanacağız.
int qt;
Sorgu yapabilmemiz için gerekli olan değişkenimiz.
mysql_init(mysql);
Bu fonksiyon ile birlikte MySQL değişkenimizi açıyor yani çalıştırıyoruz.
connection = mysql_real_connect(mysql, "localhost", "uname", "upass", "dname", 0, NULL, 0);
Sıra geldi bağlantımızı gerçekleştirmeye.Yerel alana kullanıcı adı "uname" şifresi "upass" olarak giriş
yapıyor "dname" adlı veritabanını açıyoruz.Geri kalan argümanlar ise sırasıyla port,bağlantı tipi ve giriş izinlerini belirtiyor.
if (connection == NULL){
printf(mysql_error(mysql));
return 1;
}
Bu kısımda (eğer) bağlantıda herhangi bir hata oluşmuşsa onu ekrana basıyoruz.
qt = mysql_query(connection, "select sql_int, sql_char from test);
MySQL cümleciğini çalıştırıyoruz.
if (qt != 0)
{
printf(mysql_error(connection));
return 1;
}
Cümlecikte herhangi bir hata olup olmadığını kontrol ediyoruz.
result = mysql_store_result(connection);
Sorgu sonuçlarını result değişkenine aktarıyoruz.
row = mysql_fetch_row(result);
Satırlar halinde sonuçları alıyoruz.
while((row = mysql_fetch_row(result)) != NULL ) {
printf("int: %s, char: %s\n", row[0], row[1]);
}
Satır sonuna gelene dek bütün sonuçları alıp ekrana basıyoruz.
mysql_close(connection);
mysql_free_result(result);
Bağlantımızı kapatıp sonuçları bellekten atıyoruz.
Basitçe bir sorgulama işlemi buraya kadar.
Son olarak programımızın tüm halini yazalım.
Kod:
#include <stdio.h>
#include <string.h>
#include <sys/time.h>
#include <mysql/mysql.h>
int main(){
MYSQL *mysql;
MYSQL_RES *result;
MYSQL_ROW row;
MYSQL *connection;
int qt;
mysql_init(mysql);
connection = mysql_real_connect(mysql, "localhost", "uname", "upass", "dname", 0, NULL, 0);
if (connection == NULL){
printf(mysql_error(mysql));
return 1;
}
qt = mysql_query(connection, "select sql_int, sql_char from test");
if (qt != 0)
{
printf(mysql_error(connection));
return 1;
}
result = mysql_store_result(connection);
row = mysql_fetch_row(result);
while((row = mysql_fetch_row(result)) != NULL ) {
printf("int: %s, char: %s\n", row[0], row[1]);
}
mysql_close(connection);
mysql_free_result(result);
return 0;