koneksi ke database postgresql dengan c# di...

13
Lisensi Dokumen: Copyright © 2008-2014 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org Koneksi ke database PostgreSQL dengan C# di Linux Reza Pahlava [email protected] :: 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. 1. Instalasi PostgreSQL

Upload: vudieu

Post on 03-Mar-2019

505 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Koneksi ke database PostgreSQL dengan C# di …ilmuti.org/wp-content/uploads/2014/03/Koneksi-ke...untuk koneksi ke PostgreSQL sudah tersedia dalam Mono Framework yaitu Npgsql, sehingga

Lisensi Dokumen:

Copyright © 2008-2014 ilmuti.org

Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial

(nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap

dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org

Koneksi ke database PostgreSQL dengan C# di Linux

Reza Pahlava

[email protected] :: 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.

1. Instalasi PostgreSQL

Page 2: Koneksi ke database PostgreSQL dengan C# di …ilmuti.org/wp-content/uploads/2014/03/Koneksi-ke...untuk koneksi ke PostgreSQL sudah tersedia dalam Mono Framework yaitu Npgsql, sehingga

Lisensi Dokumen:

Copyright © 2008-2014 ilmuti.org

Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial

(nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap

dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org

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)

);

2. Pembuatan aplikasi C#

Page 3: Koneksi ke database PostgreSQL dengan C# di …ilmuti.org/wp-content/uploads/2014/03/Koneksi-ke...untuk koneksi ke PostgreSQL sudah tersedia dalam Mono Framework yaitu Npgsql, sehingga

Lisensi Dokumen:

Copyright © 2008-2014 ilmuti.org

Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial

(nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap

dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org

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()

{

Page 4: Koneksi ke database PostgreSQL dengan C# di …ilmuti.org/wp-content/uploads/2014/03/Koneksi-ke...untuk koneksi ke PostgreSQL sudah tersedia dalam Mono Framework yaitu Npgsql, sehingga

Lisensi Dokumen:

Copyright © 2008-2014 ilmuti.org

Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial

(nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap

dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org

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()

{

}

}

}

Selanjutnya mari kita isi satu persatu fungsi masing-masing.

Page 5: Koneksi ke database PostgreSQL dengan C# di …ilmuti.org/wp-content/uploads/2014/03/Koneksi-ke...untuk koneksi ke PostgreSQL sudah tersedia dalam Mono Framework yaitu Npgsql, sehingga

Lisensi Dokumen:

Copyright © 2008-2014 ilmuti.org

Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial

(nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap

dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org

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

Page 6: Koneksi ke database PostgreSQL dengan C# di …ilmuti.org/wp-content/uploads/2014/03/Koneksi-ke...untuk koneksi ke PostgreSQL sudah tersedia dalam Mono Framework yaitu Npgsql, sehingga

Lisensi Dokumen:

Copyright © 2008-2014 ilmuti.org

Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial

(nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap

dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org

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();

}

Page 7: Koneksi ke database PostgreSQL dengan C# di …ilmuti.org/wp-content/uploads/2014/03/Koneksi-ke...untuk koneksi ke PostgreSQL sudah tersedia dalam Mono Framework yaitu Npgsql, sehingga

Lisensi Dokumen:

Copyright © 2008-2014 ilmuti.org

Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial

(nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap

dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org

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);

}

Page 8: Koneksi ke database PostgreSQL dengan C# di …ilmuti.org/wp-content/uploads/2014/03/Koneksi-ke...untuk koneksi ke PostgreSQL sudah tersedia dalam Mono Framework yaitu Npgsql, sehingga

Lisensi Dokumen:

Copyright © 2008-2014 ilmuti.org

Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial

(nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap

dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org

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();

}

}

Page 9: Koneksi ke database PostgreSQL dengan C# di …ilmuti.org/wp-content/uploads/2014/03/Koneksi-ke...untuk koneksi ke PostgreSQL sudah tersedia dalam Mono Framework yaitu Npgsql, sehingga

Lisensi Dokumen:

Copyright © 2008-2014 ilmuti.org

Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial

(nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap

dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org

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())

{

while (reader.Read())

Page 10: Koneksi ke database PostgreSQL dengan C# di …ilmuti.org/wp-content/uploads/2014/03/Koneksi-ke...untuk koneksi ke PostgreSQL sudah tersedia dalam Mono Framework yaitu Npgsql, sehingga

Lisensi Dokumen:

Copyright © 2008-2014 ilmuti.org

Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial

(nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap

dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org

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)

{

Page 11: Koneksi ke database PostgreSQL dengan C# di …ilmuti.org/wp-content/uploads/2014/03/Koneksi-ke...untuk koneksi ke PostgreSQL sudah tersedia dalam Mono Framework yaitu Npgsql, sehingga

Lisensi Dokumen:

Copyright © 2008-2014 ilmuti.org

Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial

(nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap

dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org

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

Page 12: Koneksi ke database PostgreSQL dengan C# di …ilmuti.org/wp-content/uploads/2014/03/Koneksi-ke...untuk koneksi ke PostgreSQL sudah tersedia dalam Mono Framework yaitu Npgsql, sehingga

Lisensi Dokumen:

Copyright © 2008-2014 ilmuti.org

Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial

(nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap

dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org

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.

Hobi membaca dan bercita-cita menjadi “ITPreneur” di usia muda.

Page 13: Koneksi ke database PostgreSQL dengan C# di …ilmuti.org/wp-content/uploads/2014/03/Koneksi-ke...untuk koneksi ke PostgreSQL sudah tersedia dalam Mono Framework yaitu Npgsql, sehingga

Lisensi Dokumen:

Copyright © 2008-2014 ilmuti.org

Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial

(nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap

dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org