1. Persiapan
1.1 Buat Database dan Tabel
Jalankan di pgAdmin (Query Tool) atau psql:
Pilih database praktikum_db, lalu jalankan:
Keterangan:
- SERIAL membuat kolom id terisi otomatis.
- UNIQUE pada nim mencegah NIM yang sama masuk dua kali.
1.2 Buat Project di Visual Studio
- Buka Visual Studio, pilih Create a new project.
- Pilih template Console App (C#), lalu klik Next.
- Isi nama project PraktikumDb, lalu klik Next.
- Pilih framework .NET yang terpasang (misalnya .NET 8), lalu klik Create.
1.3 Install Npgsql dengan NuGet
- Di Solution Explorer, klik kanan project PraktikumDb, pilih Manage NuGet Packages....
- Buka tab Browse, lalu ketik Npgsql pada kolom pencarian.
- Pilih paket Npgsql, lalu klik Install.
- Klik OK pada jendela Preview Changes dan I Accept pada License Acceptance.
Cara alternatif lewat Tools > NuGet Package Manager > Package Manager Console:
Keterangan:
- Npgsql adalah driver agar C# dapat berkomunikasi dengan PostgreSQL.
- Pastikan Npgsql muncul di Dependencies > Packages pada Solution Explorer. Jika sudah muncul, instalasi berhasil.
2. Class DatabaseConnection
Komponen Npgsql yang dipakai:
|
Class |
Fungsi |
|---|---|
NpgsqlConnection |
Membuka koneksi ke database |
NpgsqlCommand |
Menjalankan perintah SQL |
NpgsqlDataReader |
Membaca hasil SELECT baris per baris |
Tambahkan class baru: klik kanan project, pilih Add > Class..., beri nama DatabaseConnection.cs.
Keterangan:
- _connectionString bersifat private (encapsulation), sehingga data koneksi tidak bisa diakses langsung dari luar class.
- Port bawaan PostgreSQL adalah 5432. Sesuaikan jika instalasi Anda berbeda.
- CreateConnection() membuat objek koneksi baru setiap dipanggil.
- TestConnection() mencoba membuka koneksi, lalu mengembalikan true jika berhasil dan false jika gagal.
- using var menutup koneksi otomatis setelah selesai dipakai.
Uji koneksi di Program.cs:
Keterangan:
- Ganti password_anda dengan password PostgreSQL masing-masing.
- Jalankan dengan Ctrl + F5. Jika tampil "Koneksi berhasil!", lanjut ke langkah berikutnya.
3. Uji Query Dasar
Buat class baru MahasiswaQuery.cs untuk menampung query. Class ini menerima DatabaseConnection lewat constructor.
Keterangan:
- Koneksi dibuat di luar lalu dikirim ke class ini, sehingga satu DatabaseConnection bisa dipakai oleh banyak class.
- Method pada langkah 3.1 sampai 3.5 ditambahkan di dalam class MahasiswaQuery.
Pola setiap query:
Buka koneksi, buat command, isi parameter, jalankan.
3.1 INSERT
Keterangan:
- @nim, @nama, @jurusan adalah parameter. Nilainya diisi lewat Parameters.AddWithValue().
- Parameter wajib dipakai agar aman dari SQL Injection. Jangan menggabungkan input langsung ke string SQL.
- ExecuteNonQuery() dipakai untuk INSERT, UPDATE, dan DELETE. Nilai kembaliannya adalah jumlah baris yang terpengaruh.
3.2 SELECT
Keterangan:
- ExecuteReader() dipakai untuk SELECT.
- reader.Read() maju ke baris berikutnya dan bernilai false jika data habis.
- Angka pada GetString(1) adalah urutan kolom pada query SELECT (dimulai dari 0).
3.3 UPDATE
Keterangan:
- Klausa WHERE menentukan data mana yang diubah. Tanpa WHERE, semua baris ikut berubah.
- Jika NIM tidak ditemukan, hasilnya 0 data diubah.
3.4 DELETE
Keterangan:
- Sama seperti UPDATE, selalu sertakan WHERE agar tidak menghapus seluruh data.
3.5 COUNT (Satu Nilai)
Keterangan:
- ExecuteScalar() dipakai jika hasil query hanya satu nilai, misalnya COUNT.
- COUNT(*) di PostgreSQL bertipe bigint, sehingga dikonversi ke long.
4. Menjalankan Program
Edit Program.cs:
Keterangan:
- Program berhenti jika koneksi gagal, dan hanya lanjut jika koneksi berhasil.
- Jalankan dengan Ctrl + F5, lalu cocokkan hasilnya dengan tabel mahasiswa di pgAdmin.
Contoh output:
Jika program dijalankan dua kali, Insert gagal karena NIM 2024001 sudah ada. Kosongkan tabel dulu dengan DELETE FROM mahasiswa; di pgAdmin.
Error Umum
|
Pesan error |
Penyebab |
Solusi |
|---|---|---|
password authentication failed |
Password salah |
Periksa password user postgres |
Failed to connect / connection refused |
Service PostgreSQL mati atau port salah |
Jalankan service PostgreSQL, cek port |
relation "mahasiswa" does not exist |
Tabel belum dibuat di database tersebut |
Jalankan CREATE TABLE di praktikum_db |
duplicate key value violates unique constraint |
NIM sudah ada |
Ganti NIM atau hapus data lama |
database "..." does not exist |
Nama database salah |
Samakan dengan nama di pgAdmin |