• Tidak ada hasil yang ditemukan

Koneksi ke database PostgreSQL dengan C# di Linux

N/A
N/A
Protected

Academic year: 2021

Membagikan "Koneksi ke database PostgreSQL dengan C# di Linux"

Copied!
13
0
0

Teks penuh

(1)

Koneksi ke database PostgreSQL dengan C# di Linux

Reza Pahlava

reza.pahlava@raharja.info :: http://blog.rezapahlava.com

Abstrak

Untuk mempelajari C#, tentu diperlukan tool-tools seperti editor, compiler dan platform

.Net. Pada sistem operasi Windows, tools-tools tersebut dibundle dalam Microsoft

Visual Studio. Untuk platform Linux dibutuhkan compiler dan tools yang bernama

Mono Framework yang dikembangkan oleh Novell. Pada artikel kali ini akan dibahas

mengenai setup database PostgreSQL yang dilanjutkan dengan pembuatan program

sederhana untuk melakukan koneksi dan menampilkan data yang tersimpan di database

dengan C#.

Pendahuluan

Pada artikel kali ini akan dibahas mengenai setup database PostgreSQL yang

dilanjutkan dengan pembuatan program sederhana untuk melakukan koneksi dan

menampilkan data yang tersimpan di database dengan C#. Kenapa PostgreSQL, kok

bukan MySQL? Untuk tutorial ini alasannya sederhana, karena connector/provider

untuk koneksi ke PostgreSQL sudah tersedia dalam Mono Framework yaitu Npgsql,

sehingga untuk kali ini cukup menginstall Database Servernya saja.

Pembahasan

Ok, langsung saja ke pokok bahasan kita dan sama seperti sebelumnya, kali ini masih

menggunakan sistem operasi Ubuntu 11.10.

(2)

Untuk instalasi, cukup mudah. Berikut adalah langkah-langkah untuk instalasi, test

koneksi, membuat user dengan nama ip dan database dengan nama test (# adalah

komentar, tidak perlu diketik).

sudo apt-get install postgresql

sudo -u postgres createuser --superuser ip sudo -u postgres createdb test

sudo -u postgres psql

#berikut adalah perintah pada terminal postgres #ketik password baru yang akan diset (2x) \password ip

#keluar \q

#Koneksi lagi dengan user dan password yang baru psql -U ip -d test -W

Langkah selanjutnya adalah membuat tabel untuk keperluan tutorial ini. Masukkan

perintah SQL berikut pada terminal PostgreSQL tadi.

1 2 3 4 5 6 7 8

CREATE TABLE Pegawai (

id INT NOT NULL,

nama VARCHAR(64) NOT NULL, alamat VARCHAR(128) NOT NULL, keterangan VARCHAR(255), PRIMARY KEY(id)

);

(3)

Selanjutnya masuk ke koding C#. Kali ini akan dibuat aplikasi sederhana untuk

menambahkan, mengubah, menghapus dan menampilkan data pegawai. Buatlah file

dengan nama Postgresql.cs (pada terminal ketik: gedit Postgresql.cs &) kemudian isikan

kode berikut yang merupakan kerangka program secara keseluruhan.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 using System; using System.Data; using Npgsql; namespace Database { class Postgresql { ///Objek koneksi

IDbConnection _dbcon = null;

public static void Main(string [] args) {

}

///Buka Koneksi public void Connect() {

}

///Tutup Koneksi public void Close() {

(4)

27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 }

///Tampilkan data pegawai public void Select()

{ }

///Tambah data baru public void Insert() {

}

///Ubah data

public void Update() {

}

///Hapus data

public void Delete() {

} }

}

(5)

2.a Buka/tutup koneksi

Berikut adalah kode untuk membuat objek koneksi ke database dengan user: ip,

password: admin dan database: test. Sesuaikan parameter-parameter tersebut dengan

setingan database anda.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ///Buka Koneksi public void Connect() { string connectionString = "Server=localhost;" + "Database=test;" + "User ID=ip;" + "Password=admin;";

_dbcon = new NpgsqlConnection(connectionString); _dbcon.Open();

}

///Tutup Koneksi public void Close() {

if (_dbcon != null) _dbcon.Close(); _dbcon = null; }

2.b Menambahkan data baru

Berikut adalah kode untuk menambahkan data pegawai ke database. Data yang akan

ditambahkan perlu diinput oleh user. Disini kita menggunakan interface IDbCommand

mengeksekusi perintah SQL dan IDbDataParameter untuk mengisi field-field dari tabel

(6)

Pegawai. Dari segi keamanan, kemudahan, penggunaan parameter lebih dianjurkan

daripada menyambungkan nilai field pada SQL (dengan string +=).

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

///Tambah data baru public void Insert() {

using(IDbCommand cmd = _dbcon.CreateCommand()) {

string [] paramNames = {"@id", "@nama", "@alamat", "@keterangan"};

string [] paramDisplay = {"Id", "Nama", "Alamat", "Keterangan"};

DbType [] dbTypes = {DbType.Int32, DbType.String, DbType.String, DbType.String};

cmd.CommandText =

"INSERT INTO Pegawai VALUES(@id, @nama, @alamat, @keterangan)";

for (int k = 0; k < paramDisplay.Length; k++) {

Console.Write(paramDisplay[k] + "?"); string val = Console.ReadLine().Trim();

IDbDataParameter param = cmd.CreateParameter(); param.ParameterName = paramNames[k]; param.DbType = dbTypes[k]; param.Value = val; cmd.Parameters.Add(param); } cmd.ExecuteNonQuery(); }

(7)

2.c Mengubah data pegawai

Kode berikut adalah kode untuk mengubah data yang sebelumnya sudah terdaftar di

database.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ///Ubah data

public void Update() {

using(IDbCommand cmd = _dbcon.CreateCommand()) {

string [] paramNames = {"@id", "@nama", "@alamat", "@keterangan"};

string [] paramDisplay = {"Id", "Nama", "Alamat", "Keterangan"};

DbType [] dbTypes = {DbType.Int32, DbType.String, DbType.String, DbType.String};

string sql = "UPDATE Pegawai SET nama=@nama, alamat=@alamat, ";

sql += "keterangan=@keterangan WHERE id=@id";

cmd.CommandText = sql;

for (int k = 0; k < paramDisplay.Length; k++) {

Console.Write(paramDisplay[k] + "?"); string val = Console.ReadLine().Trim();

IDbDataParameter param = cmd.CreateParameter(); param.ParameterName = paramNames[k];

param.DbType = dbTypes[k]; param.Value = val;

cmd.Parameters.Add(param); }

(8)

29

cmd.ExecuteNonQuery(); }

}

2.d Hapus data pegawai

Untuk menghapus data pegawai, caranya dengan mengeksekusi perintah DELETE

terhadap data pegawai dengan ID tertentu. Berikut kode C#nya.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

///Menghapus data pegawai public void Delete()

{

using(IDbCommand cmd = _dbcon.CreateCommand()) {

cmd.CommandText = "DELETE FROM Pegawai WHERE id=@id";; Console.Write("ID Pegawai?");

string val = Console.ReadLine().Trim();

IDbDataParameter param = cmd.CreateParameter(); param.ParameterName = "@id"; param.DbType = DbType.Int32; param.Value = val; cmd.Parameters.Add(param); cmd.ExecuteNonQuery(); } }

(9)

2.e Menampilkan data pegawai

Berikut adalah bagian kode untuk menampilkan data pegawai. Untuk menampilkan data

seluruh pegawai user tinggal ketik ENTER, sedangkan untuk menampilkan data

pegawai tertentu, masukkan ID pegawai.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

///Menampilkan data pegawai public void Select()

{

string id; int nId;

Console.Write("Id Pegawai [semua]?"); id = Console.ReadLine().Trim();

using(IDbCommand cmd = _dbcon.CreateCommand()) {

string sql = "SELECT id,nama,alamat,keterangan FROM Pegawai";

if (int.TryParse(id, out nId)) {

sql += " WHERE id=@id";

IDbDataParameter param = cmd.CreateParameter(); param.ParameterName = "@id"; param.DbType = DbType.Int32; param.Value = nId; cmd.Parameters.Add(param); } cmd.CommandText = sql;

using(IDataReader reader = cmd.ExecuteReader()) {

(10)

28 29 30 31 32 33 34 35 36 37 { Console.WriteLine(); Console.WriteLine("---"); Console.WriteLine("ID : {0}", reader["id"]); Console.WriteLine("Nama : {0}", reader["nama"]); Console.WriteLine("Alamat : {0}", reader["alamat"]); Console.WriteLine("Keterangan: {0}", reader["keterangan"]); Console.WriteLine(); } } } }

2.f Method Main

Bagian terakhir adalah penggabungan dari fungsi-fungsi diatas atau bagian method

Main. Dalam method Main, akan ditampilkan beberapa menu, kemudian user

menginput kode menu, dan berdasarkan kode yang diinput, maka fungsi-fungsi dari 2.a

s/d 2.e akan dipanggil.

1 2 3 4 5 6 7 8 9 10

public static void Main(string [] args) {

string pilihan;

Postgresql db = new Postgresql(); db.Connect();

bool loop = true; while(loop) {

(11)

11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 //Tampilkan menu Console.WriteLine("================================"); Console.WriteLine("1. Input data baru");

Console.WriteLine("2. Ubah data pegawai"); Console.WriteLine("3. Hapus data pegawai"); Console.WriteLine("4. Tampilkan data pegawai"); Console.WriteLine("*. Selesai");

Console.Write("Pilihan[1-4]:"); pilihan = Console.ReadLine().Trim(); switch(pilihan)

{

case "1": db.Insert(); break; case "2": db.Update(); break; case "3": db.Delete(); break; case "4": db.Select(); break; default: loop = false; break; } } Console.WriteLine("Bye!"); db.Close(); }

Setelah semua kode diatas sudah diinput, selanjutnya dikompile dan dijalankan dengan

perintah sebagai berikut:

gmcs Postgresql.cs -r:System.Data.dll -r:Npgsql.dll ./Postgresql.exe

Jika tidak ada error, maka akan didapatkan tampilan seperti dibawah ini. Pada contoh

kali ini, tidak disertakan kode C# untuk memvalidasi inputan dari user dan penanganan

(12)

error, misalnya jika data yang diinput memiliki ID yang sama, dan sebagainya. Bagian

ini sengaja saya sisakan untuk anda dan silahkan dikembangkan lebih lanjut.

Penutup

Seperti halnya koneksi C# ke server database pada umumnya, koneksi ke server

database PostgreSQL juga memerlukan sebuah konektor .net provider yang berguna

untuk membantu dalam menjembatani antara program C# yang akan kita buat dengan

server database.

Referensi

Putusgr, „

Koneksi ke database PostgreSQL dengan C# di Linux

‟,

http://ipsusila.wordpress.com/2012/03/16/koneksi-ke-database-postgresql-dengan-cs-di-linux/

Biografi

Reza Pahlava lahir pada tanggal 15 Juli 1990 di Tangerang, sedang melanjutkan kuliah di STMIK Raharja Tangerang pada jurusan Teknik Informatika konsentrasi Software Engineering. Saat ini bekerja sebagai IT Infrastructure di PT IMS Logistics.

(13)

Referensi

Dokumen terkait

1. Implementasi prinsip Pelayanan Publik yang sesuai dengan PP Nomor 96 Tahun 2012 Tentang Pelayanan Publik di Kelurahan Tasikmadu yang mengacu pada

Populasi dalam penelitian ini adalah seluruh kelas IV SD Negeri di Gugus Dewi Sartika Kecamatan Denpasar Timur, yang terdiri dari 6 (enam) sekolah, dengan seluruh siswa

komponen public key system (PKS) diantaranya certification authority (CA) merupakan sebuah body/entity yang memberikan dan mengelola sertifikat digital yang dibutuhkan

Menurut AKP willy, kepada keluarga korban, sewaktu sidang keluarga pada bulan Juli 2015 di rumah korban yang melibatkan keluarga Sur dan korban serta warga sekitar,

Berdasarkan parameter kondisi eksisting pompa banjir, pintu air, tanggul dan drainase yang sudah diklasifikasi berdasarkan tabel, maka indeks kapasitas kecamatan

Dalam hal penagihan dan peringatan secara tertulis (somasi) tersebut tidak dipatuhi oleh pelaku kerugian negara sebagaimana dimaksud dalam Pasal 48, maka Kepala

Penelitian ini menggunakan variabel dependen peringkat obligasi dan variabel independen pajak tangguhan besar positif dan negatif serta rasio pajak yang besar dan

Dengan diketahuinya gambaran MRSA pada penderita infeksi kaki diabetik di Poliklinik Kaki Diabetik RSUD Ulin Banjarmasin, maka dapat memberikan informasi mikrobiologis