C Verileri Ekleme Ve Veritabanına Kaydetme

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;

}
“`

Faydalı Siteler ve Dosyalar


Yayımlandı

kategorisi