Bahasa C merupakan pondasi utama dalam teknologi, karena dengan belajar bahasa C setidaknya kita belajar mengenai cara kerja komputer, belajar bagaimana memanage memory secara manual. Juga dikarenakan bahasa C salah satu bahasa tercepat, oleh karenanya sangat ideal digunakan untuk membangun OS, game sistem emeded dan banyak lagi.
Belajar C memang terasa sangat sulit, tapi alhamdulillan dengan bantuan AI sekarang kita lebih mudah untuk mempelajari bahasa legendaris tersebut.
Diawal pembelajaran ini, saya ingin mencatat pembelajaran pertama saya dengan bahasa C dengan bantuan AI, yaitu input data :).
- OS yang saya gunakan adalah Fedora 43 dengan mariadb 10.11
- Terdapat database dengan table departemen ( nama_departemen) dan karyawan ( nama_karyawan ).
Alur proses datanya, kita memasukkan nama departemen kedalam table departemen, kemudian memasukkan nama karyawan dengan nama departemen pada table karyawan.
berikut ini isi file db_config.c
#include "db_config.h"
#include <stdio.h>
#include <stdlib.h>
MYSQL* buka_koneksi() {
MYSQL *conn = mysql_init(NULL);
if (conn == NULL) {
fprintf(stderr, "mysql_init() gagal\n");
return NULL;
}
if (mysql_real_connect(conn, "localhost", "root", "bismillah", "app_perusahaan", 0, NULL, 0) == NULL) {
handle_error(conn);
return NULL;
}
return conn;
}
void handle_error(MYSQL *conn) {
fprintf(stderr, "Database Error: %s\n", mysql_error(conn));
}dan ini isi file db_config.h
#ifndef DB_CONFIG_H
#define DB_CONFIG_H
#include <mysql.h>
/* Fungsi untuk membuka koneksi */
MYSQL* buka_koneksi();
/* Fungsi untuk menangani error */
void handle_error(MYSQL *conn);
#endifdan ini isi file input_departemen.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "db_config.h"
int main() {
/* membuka koneksi menggunakan fungsi yang sudah kita buat di db_config.c */
MYSQL *conn = buka_koneksi();
if (conn == NULL) return EXIT_FAILURE;
char nama_dept[100];
char query[256];
printf("--- Form Input Departemen Baru ---\n");
printf("Masukkan Nama Departemen: ");
/* Mengambil input nama departemen */
fgets(nama_dept, sizeof(nama_dept), stdin);
nama_dept[strcspn(nama_dept, "\n")] = 0; /* Menghapus karakter newline */
/* Validasi sederhana agar tidak menginput nama kosong */
if (strlen(nama_dept) == 0) {
printf("Nama departemen tidak boleh kosong!\n");
mysql_close(conn);
return EXIT_FAILURE;
}
/* Menyusun query INSERT */
sprintf(query, "INSERT INTO departemen (nama_departemen) VALUES ('%s')", nama_dept);
/* Eksekusi query ke MariaDB */
if (mysql_query(conn, query)) {
handle_error(conn);
} else {
printf("Departemen '%s' berhasil ditambahkan!\n", nama_dept);
}
/* Menutup koneksi */
mysql_close(conn);
return EXIT_SUCCESS;
}dan ini isi dari file input_karyawan.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "db_config.h"
int main() {
MYSQL *conn = buka_koneksi();
if (conn == NULL) return EXIT_FAILURE;
char nama_karyawan[100], nama_dept[100],query[512];
printf("---Form Input Karyawan---\n");
printf("Nama Karyawan : ");
fgets(nama_karyawan, sizeof(nama_karyawan), stdin);
nama_karyawan[strcspn(nama_karyawan, "\n")] = 0;
printf("Nama Departemen : ");
fgets(nama_dept, sizeof(nama_dept), stdin);
nama_dept[strcspn(nama_dept, "\n")] = 0;
/* 1. Cari ID Departemen berdasarkan Nama */
sprintf(query, "SELECT id FROM departemen WHERE nama_departemen = '%s'", nama_dept);
if (mysql_query(conn, query)) {
handle_error(conn);
mysql_error(conn);
mysql_close(conn);
return EXIT_FAILURE;
}
MYSQL_RES *result = mysql_store_result(conn);
MYSQL_ROW row = mysql_fetch_row(result);
if (row == NULL) {
printf("Error: Departemen '%s' tidak ditemukan!\n", nama_dept);
mysql_free_result(result);
mysql_close(conn);
return EXIT_FAILURE;
}
/* Ambil ID dari hasil query */
int id_dept = atoi(row[0]);
mysql_free_result(result);
/* 2. Insert ke table karyawan menggunakan ID yang didapat */
sprintf(query, "INSERT INTO karyawan (nama_karyawan, id_departemen) VALUES ('%s', %d)", nama_karyawan, id_dept);
if (mysql_query(conn, query)) {
handle_error(conn);
} else {
printf("Karyawan '%s' berhasil didaftarkan di departemen '%s' (ID: %d).\n", nama_karyawan, nama_dept, id_dept);
}
mysql_close(conn);
return EXIT_SUCCESS;
}
Untuk menjalankan program ini, terlebih dulu harus di compile dengan perintah: gcc db_config.c input_departemen.c -o departemen_input $(mariadb_config --cflags --libs) yang akan menghasilkan program exec bernama departemen_input.
Untuk running program tersebut cukup ketik ./departemen_input.
Selanjutnya kita compile juga file input_karyawan.c dengan peritnah yang hampir mirip: gcc db_config.c input_karyawan.c -o program_input $(mariadb_config --cflags --libs)
Untuk running program diatas sama, cukup kita ketikkan ./program_input
Oh ya, sebelum meng kompile program ini pada OS Fedora jgn lupa install program mariadb-devel terlebih dulu.
Comments