C Verileri Ekleme ve Veritabanına Kaydetme
Veritabanlarına veri eklemek, veritabanı yönetiminin temel bir yönüdür. C programlama dilinde, veritabanlarına veri eklemek için çeşitli yöntemler mevcuttur. Bu makalede, C’de veritabanlarına veri eklemenin adım adım bir kılavuzunu sağlayacağız.
Adım 1: Veritabanına Bağlanma
Veritabanına veri eklemeden önce, öncelikle veritabanına bağlanmanız gerekir. Bu, mysql_connect()
fonksiyonu kullanılarak yapılabilir.
c
MYSQL *conn;
conn = mysql_connect("localhost", "kullanıcı_adı", "şifre", "veritabanı_adı");
Adım 2: SQL Sorgusu Oluşturma
Veritabanına veri eklemek için bir SQL sorgusu oluşturmanız gerekir. INSERT INTO
ifadesi, veritabanına veri eklemek için kullanılır.
sql
INSERT INTO tablo_adı (sütun1, sütun2, ...) VALUES (değer1, değer2, ...);
Adım 3: Sorgunun Hazırlanması
SQL sorgusu hazırlanmalıdır. Bu, mysql_prepare()
fonksiyonu kullanılarak yapılabilir.
c
MYSQL_STMT *stmt;
stmt = mysql_stmt_init(conn);
mysql_stmt_prepare(stmt, sorgu);
Adım 4: Parametre Bağlama
Eğer sorguda parametreler varsa, bunlar mysql_stmt_bind_param()
fonksiyonu kullanılarak bağlanmalıdır.
“`c
MYSQL_BIND bind[3];
memset(bind, 0, sizeof(bind));
bind[0].buffer_type = MYSQL_TYPE_LONG;
bind[0].buffer = (void *)&id;
bind[0].is_null = 0;
bind[0].length = 0;
bind[1].buffer_type = MYSQL_TYPE_STRING;
bind[1].buffer = (void *)isim;
bind[1].is_null = 0;
bind[1].length = strlen(isim);
bind[2].buffer_type = MYSQL_TYPE_STRING;
bind[2].buffer = (void *)soyisim;
bind[2].is_null = 0;
bind[2].length = strlen(soyisim);
mysql_stmt_bind_param(stmt, bind);
“`
Adım 5: Sorgunun Yürütülmesi
Hazırlanan sorgu, mysql_stmt_execute()
fonksiyonu kullanılarak yürütülmelidir.
c
mysql_stmt_execute(stmt);
Adım 6: Sonuçların Alınması
Sorgu başarıyla yürütüldükten sonra, sonuçlar mysql_stmt_store_result()
fonksiyonu kullanılarak alınabilir.
c
mysql_stmt_store_result(stmt);
Adım 7: Veritabanı Bağlantısını Kapatma
Veritabanı bağlantısı, mysql_close()
fonksiyonu kullanılarak kapatılmalıdır.
c
mysql_close(conn);
Örnek Kod
Aşağıdaki kod parçası, “kişiler” adlı bir tabloya veri eklemeyi gösteren bir örnektir:
“`c
include
include
include
int main() {
// Veritabanına bağlanma
MYSQL *conn;
conn = mysql_connect(“localhost”, “kullanıcı_adı”, “şifre”, “veritabanı_adı”);
if (conn == NULL) {
fprintf(stderr, “Veritabanına bağlanılamadı: %s\n”, mysql_error(conn));
return EXIT_FAILURE;
}
// SQL sorgusu oluşturma
const char *sorgu = "INSERT INTO kişiler (id, isim, soyisim) VALUES (?, ?, ?)";
// Sorgunun hazırlanması
MYSQL_STMT *stmt;
stmt = mysql_stmt_init(conn);
if (mysql_stmt_prepare(stmt, sorgu) != 0) {
fprintf(stderr, "Sorgu hazırlanamadı: %s\n", mysql_stmt_error(stmt));
mysql_close(conn);
return EXIT_FAILURE;
}
// Parametre bağlama
MYSQL_BIND bind[3];
memset(bind, 0, sizeof(bind));
int id = 1;
const char *isim = "John";
const char *soyisim = "Doe";
bind[0].buffer_type = MYSQL_TYPE_LONG;
bind[0].buffer = (void *)&id;
bind[0].is_null = 0;
bind[0].length = 0;
bind[1].buffer_type = MYSQL_TYPE_STRING;
bind[1].buffer = (void *)isim;
bind[1].is_null = 0;
bind[1].length = strlen(isim);
bind[2].buffer_type = MYSQL_TYPE_STRING;
bind[2].buffer = (void *)soyisim;
bind[2].is_null = 0;
bind[2].length = strlen(soyisim);
if (mysql_stmt_bind_param(stmt, bind) != 0) {
fprintf(stderr, "Parametreler bağlanamadı: %s\n", mysql_stmt_error(stmt));
mysql_stmt_close(stmt);
mysql_close(conn);
return EXIT_FAILURE;
}
// Sorgunun yürütülmesi
if (mysql_stmt_execute(stmt) != 0) {
fprintf(stderr, "Sorgu yürütülemedi: %s\n", mysql_stmt_error(stmt));
mysql_stmt_close(stmt);
mysql_close(conn);
return EXIT_FAILURE;
}
// Sonuçların alınması
if (mysql_stmt_store_result(stmt) != 0) {
fprintf(stderr, "Sonuçlar alınamadı: %s\n", mysql_stmt_error(stmt));
mysql_stmt_close(stmt);
mysql_close(conn);
return EXIT_FAILURE;
}
// Veritabanı bağlantısını kapatma
mysql_stmt_close(stmt);
mysql_close(conn);
return EXIT_SUCCESS;
}
“`