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.0.. Instalasi PostgreSQL
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 (x) \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. CREATE TABLE Pegawai ( id INT NOT NULL, nama VARCHAR() NOT NULL, alamat VARCHAR() NOT NULL, keterangan VARCHAR(), PRIMARY KEY(id) );. Pembuatan aplikasi C#
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. 0 0 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()
0 0 0 ///Tampilkan data pegawai public void Select() ///Tambah data baru public void Insert() ///Ubah data public void Update() ///Hapus data public void Delete() Selanjutnya mari kita isi satu persatu fungsi masing-masing.
.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. ///Buka Koneksi public void Connect() string connectionstring = "Server=localhost;" + "Database=test;" + "User ID=ip;" + "Password=admin;"; 0 _dbcon = new NpgsqlConnection(connectionString); _dbcon.open(); 0 ///Tutup Koneksi public void Close() if (_dbcon!= null) _dbcon.close(); _dbcon = null;.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
Pegawai. Dari segi keamanan, kemudahan, penggunaan parameter lebih dianjurkan daripada menyambungkan nilai field pada SQL (dengan string +=). 0 ///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.Int, 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(); 0 IDbDataParameter param = cmd.createparameter(); param.parametername = paramnames[k]; param.dbtype = dbtypes[k]; param.value = val; cmd.parameters.add(param); cmd.executenonquery();
.c Mengubah data pegawai Kode berikut adalah kode untuk mengubah data yang sebelumnya sudah terdaftar di database. 0 ///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.Int, DbType.String, DbType.String, DbType.String; 0 "; 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);
cmd.executenonquery();.d Hapus data pegawai Untuk menghapus data pegawai, caranya dengan mengeksekusi perintah DELETE terhadap data pegawai dengan ID tertentu. Berikut kode C#nya. 0 ///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.Int; param.value = val; cmd.parameters.add(param); cmd.executenonquery();
.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. 0 0 ///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.Int; param.value = nid; cmd.parameters.add(param); cmd.commandtext = sql; using(idatareader reader = cmd.executereader()) while (reader.read())
0 Console.WriteLine(); Console.WriteLine("---"); Console.WriteLine("ID Console.WriteLine("Nama : 0", reader["nama"]); Console.WriteLine("Alamat : 0", reader["alamat"]); Console.WriteLine("Keterangan: 0", reader["keterangan"]); Console.WriteLine(); : 0", reader["id"]);.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.a s/d.e akan dipanggil. 0 public static void Main(string [] args) string pilihan; Postgresql db = new Postgresql(); db.connect(); bool loop = true; while(loop)
0 0 //Tampilkan menu Console.WriteLine("================================"); Console.WriteLine(". Input data baru"); Console.WriteLine(". Ubah data pegawai"); Console.WriteLine(". Hapus data pegawai"); Console.WriteLine(". Tampilkan data pegawai"); Console.WriteLine("*. Selesai"); Console.Write("Pilihan[-]:"); pilihan = Console.ReadLine().Trim(); switch(pilihan) case "": db.insert(); break; case "": db.update(); break; case "": db.delete(); break; case "": 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
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/0/0//koneksi-ke-database-postgresql-dengan-cs-dilinux/ Biografi Reza Pahlava lahir pada tanggal Juli 0 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. Hobi membaca dan bercita-cita menjadi ITPreneur di usia muda.