C Veritabanına Her Tabloya Kayıt Ekleme
Veritabanı yönetim sistemleri (DBMS), verileri yapılandırılmış bir şekilde saklamak ve yönetmek için kullanılan yazılım programlarıdır. C programlama dili, veritabanlarıyla etkileşime geçmek için çeşitli işlevler ve kitaplıklar sağlar. Bu makale, C kullanarak bir veritabanındaki her tabloya nasıl kayıt ekleneceğini ayrıntılı olarak açıklayacaktır.
Gereklilikler
- C programlama dili
- Bir veritabanı yönetim sistemi (örneğin MySQL, PostgreSQL, SQLite)
- Veritabanına bağlanmak için uygun bir kitaplık (örneğin libmysqlclient, libpq, sqlite3)
Adım 1: Veritabanına Bağlanma
İlk adım, veritabanına bağlanmaktır. Bu, veritabanı sunucusunun adresini, bağlantı noktasını, kullanıcı adını ve parolayı belirterek yapılabilir. Örneğin, MySQL için aşağıdaki kod kullanılabilir:
“`c
include
include
include
int main() {
MYSQL *con = mysql_init(NULL);
if (mysql_real_connect(con, "localhost", "kullanici_adi", "sifre", "veritabani_adi", 0, NULL, 0) == NULL) {
fprintf(stderr, "%s\n", mysql_error(con));
mysql_close(con);
return EXIT_FAILURE;
}
// Bağlantı başarılı
// ...
mysql_close(con);
return EXIT_SUCCESS;
}
“`
Adım 2: Tabloları Listeleme
Bir sonraki adım, veritabanındaki tabloları listelemektir. Bu, SHOW TABLES
sorgusunu kullanarak yapılabilir. Örneğin, MySQL için aşağıdaki kod kullanılabilir:
“`c
include
include
include
int main() {
MYSQL *con = mysql_init(NULL);
if (mysql_real_connect(con, "localhost", "kullanici_adi", "sifre", "veritabani_adi", 0, NULL, 0) == NULL) {
fprintf(stderr, "%s\n", mysql_error(con));
mysql_close(con);
return EXIT_FAILURE;
}
// Tabloları listele
MYSQL_RES *res = mysql_list_tables(con, NULL);
if (res == NULL) {
fprintf(stderr, "%s\n", mysql_error(con));
mysql_close(con);
return EXIT_FAILURE;
}
// Sonuçları yazdır
MYSQL_ROW row;
while ((row = mysql_fetch_row(res)) != NULL) {
printf("%s\n", row[0]);
}
mysql_free_result(res);
mysql_close(con);
return EXIT_SUCCESS;
}
“`
Adım 3: Kayıt Ekleme
Her tabloya kayıt eklemek için INSERT INTO
sorgusu kullanılır. Sorgu, eklenecek verileri ve hedef tabloyu belirtir. Örneğin, MySQL için aşağıdaki kod kullanılabilir:
“`c
include
include
include
int main() {
MYSQL *con = mysql_init(NULL);
if (mysql_real_connect(con, "localhost", "kullanici_adi", "sifre", "veritabani_adi", 0, NULL, 0) == NULL) {
fprintf(stderr, "%s\n", mysql_error(con));
mysql_close(con);
return EXIT_FAILURE;
}
// Tablolara kayıt ekle
char *tablolar[] = {"tablo1", "tablo2", "tablo3"};
int tablo_sayisi = sizeof(tablolar) / sizeof(tablolar[0]);
for (int i = 0; i < tablo_sayisi; i++) {
char *sorgu = malloc(1024);
sprintf(sorgu, "INSERT INTO %s (sutun1, sutun2, sutun3) VALUES (1, 'veri1', 10.5)", tablolar[i]);
if (mysql_query(con, sorgu) != 0) {
fprintf(stderr, "%s\n", mysql_error(con));
mysql_close(con);
return EXIT_FAILURE;
}
free(sorgu);
}
mysql_close(con);
return EXIT_SUCCESS;
}
“`