TeknoTR  

Geri Dön   TeknoTR > Webmasterler için > Programlama
Üye Ol SSS Sxe indir Sosyal Gruplar Takvim Resim Galerisi Etiketler Bütün Forumları okunmuş kabul et


C ile MySQL Sorgulamak !

Programlama bölümünde C ile MySQL Sorgulamak ! konusu , 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ı ...

Cevapla
 
LinkBack Konu Seçenekleri
Eski 03-18-2007, 19:42   #1 (permalink)
Co-Admin
 
Jedah - ait Avatar
 
Giriş: 16-05-2006
Mesajlar: 1.295
Rep Puanı: 1000
Jedah Rütbe Artı +3Jedah Rütbe Artı +3Jedah Rütbe Artı +3Jedah Rütbe Artı +3Jedah Rütbe Artı +3Jedah Rütbe Artı +3Jedah Rütbe Artı +3Jedah Rütbe Artı +3
Rep Gücü: 500
E-Güven: (0/0)

Arrow C ile MySQL Sorgulamak !


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

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

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;
__________________
Gezmeden Seyyah ,Okumadan Alim ,Ölmeden 'Aşık' Olunmaz!...

TeknoTR.Net

http://resim.teknotr.net/uploads/4d39f7ea6d.png
Jedah isimli üyemiz çevrimdışıdır. (Offline)  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Alıntı ile Cevapla
Cevapla

Konu Seçenekleri

Yetkileriniz
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık
Gitmek istediğiniz klasörü seçiniz


Şu an saat 20:32 .
Tarih 09-07-2008


Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd
Türkçe Çeviri : ach

eXTReMe Tracker


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192