C ile Veritabanına Fotoğraf Ekleme
Veritabanlarına fotoğraf eklemek, web uygulamaları ve diğer yazılım sistemleri için yaygın bir gereksinimdir. C programlama dili, veritabanlarına fotoğraf eklemek için güçlü özellikler sunar. Bu makale, C kullanarak veritabanlarına fotoğraf ekleme sürecini ayrıntılı olarak açıklayacaktır.
Veritabanı Bağlantısı Kurma
İlk adım, veritabanına bir bağlantı kurmaktır. Bu, mysql_connect()
fonksiyonu kullanılarak yapılabilir:
c
MYSQL *conn;
conn = mysql_connect("localhost", "kullanici_adi", "sifre", "veritabani_adi");
Bu kod, “localhost” sunucusunda “kullanici_adi” ve “sifre” kimlik bilgilerini kullanarak “veritabani_adi” veritabanına bir bağlantı oluşturur.
Fotoğrafı Okuma
Ardından, eklemek istediğiniz fotoğrafı bir dosyadan okumanız gerekir. Bu, fopen()
ve fread()
fonksiyonları kullanılarak yapılabilir:
c
FILE *dosya;
dosya = fopen("fotograf.jpg", "rb");
char *fotograf_veri;
uzunluk = fread(fotograf_veri, 1, dosya_boyutu, dosya);
Bu kod, “fotograf.jpg” dosyasını ikili modda açar ve içeriğini fotograf_veri
değişkenine okur. dosya_boyutu
, dosyanın boyutudur.
Fotoğrafı Veritabanına Ekleme
Fotoğrafı veritabanına eklemek için mysql_query()
fonksiyonunu kullanabilirsiniz:
c
char sorgu[1024];
sprintf(sorgu, "INSERT INTO fotograflar (fotograf) VALUES (?)");
MYSQL_STMT *stmt;
mysql_stmt_init(&stmt);
mysql_stmt_prepare(&stmt, sorgu, strlen(sorgu));
MYSQL_BIND bind[1];
memset(&bind, 0, sizeof(bind));
bind[0].buffer_type = MYSQL_TYPE_BLOB;
bind[0].buffer = fotograf_veri;
bind[0].buffer_length = dosya_boyutu;
mysql_stmt_bind_param(&stmt, bind);
mysql_stmt_execute(&stmt);
Bu kod, “fotograflar” tablosuna bir kayıt ekler ve “fotograf” sütununa fotoğraf verilerini ekler. sprintf()
fonksiyonu, SQL sorgusunu oluşturur. mysql_stmt_init()
, mysql_stmt_prepare()
ve mysql_stmt_bind_param()
fonksiyonları, sorguyu hazırlar ve parametreleri bağlar. mysql_stmt_execute()
fonksiyonu, sorguyu yürütür.
Dosyayı Kapatma ve Bağlantıyı Kesme
Son olarak, dosyayı kapatmanız ve veritabanı bağlantısını kesmeniz gerekir:
c
fclose(dosya);
mysql_close(conn);
Örnek Kod
İşte C kullanarak veritabanına fotoğraf ekleyen tam bir örnek kod:
“`c
include
include
include
int main() {
// Veritabanı bağlantısı kur
MYSQL *conn;
conn = mysql_connect(“localhost”, “kullanici_adi”, “sifre”, “veritabani_adi”);
// Fotoğrafı oku
FILE *dosya;
dosya = fopen("fotograf.jpg", "rb");
char *fotograf_veri;
uzunluk = fread(fotograf_veri, 1, dosya_boyutu, dosya);
// Fotoğrafı veritabanına ekle
char sorgu[1024];
sprintf(sorgu, "INSERT INTO fotograflar (fotograf) VALUES (?)");
MYSQL_STMT *stmt;
mysql_stmt_init(&stmt);
mysql_stmt_prepare(&stmt, sorgu, strlen(sorgu));
MYSQL_BIND bind[1];
memset(&bind, 0, sizeof(bind));
bind[0].buffer_type = MYSQL_TYPE_BLOB;
bind[0].buffer = fotograf_veri;
bind[0].buffer_length = dosya_boyutu;
mysql_stmt_bind_param(&stmt, bind);
mysql_stmt_execute(&stmt);
// Dosyayı kapat ve bağlantıyı kes
fclose(dosya);
mysql_close(conn);
return 0;
}
“`
Faydalı Kaynaklar