Belajar C

By admin , 23 December 2025

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 :).

  1. OS yang saya gunakan adalah Fedora 43 dengan mariadb 10.11
  2. 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);
#endif

dan 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.



 

Tags

Comments