Pada kesempatan kali ini aku akan coba membahas cara koneksi dari VB.net
2008 ke server database PostgreSQL. Sebelum memulai membahas, ada baiknya
menjelaskan ketentuan awal.
- Server database PostgreSQLsudah terinstal
- Koneksi pada contoh program yang disediakan menggunakan server localhost ; port:5432
OK, mari kita lanjut ke pokok pembahasan.
Seperti halnya koneksi vb.net ke server database pada umumnya, koneksi ke
server database PostgreSQL juga memerlukan sebuah konektor .net provider yang
berguna untuk membantu dalam menjembatani antara program vb.net yang akan kita
buat dengan server database. Setelah bertanya dengan om google, akhirnya jatuhlah pilihan terhadap Npsql (http://npgsql.projects.postgresql.org/). Konektor ini dikembangkan dengan menggunakan bahasa C# dan kompatibel penuh dengan database posgre 7.x dan versi diatasnya. Apabila hanya ingin tinggal pakai saja, maka Npsql dapat di unduh melalui link ini.
Setelah mendapatkan file .net provider Npsql, ada baiknya file tersebut di letakan di folder yang sama di mana file .exe dari program yang akan dibuat berada. Sebagai contoh, pada proses pembuatan aplikasi berbasis .net masih berstatus debug, oleh karena itu file .net provider Npsql dapat diletakan pada folder Debug.
Apabila dikemudian hari, status dari program yang dibuat ingin beralih ke Release, maka jangan lupa untuk menyertakan ke-4 file tersebut.
Sekarang kita mulai pengaturan di bagian VB.net 2008, setelah membuat project baru, maka tambahan referensi baru pada aplikasi tersebut.
Pilih bagian Browse dan arahkan ke folder dimana file-file dari Npsql.dll berada.
Kemudian, pada form yang akan digunakan, jangan lupa juga tambahankan perintah Imports Npsql.
Imports Npsql
Perihal urusan Connection String, aku menggunakan perintah sebagai berikut ini :
str1 = String.Format("Server={0};Port={1};User Id={2};Password={3};Database={4};", "localhost", "5432", "postgres", "postgres", "coba")
Connection String tersebut merupakan connection string yang digunakan jika pada sisi server sudah terdapat database. Jika pada sisi server belum ada database yang dituju, maka dapat menggunakan connection string berikut ini :
str2 = String.Format("Server={0};Port={1};User Id={2};Password={3};", "localhost", "5432", "postgres", "postgres")
Sedangkan untuk urusan koneksi ke database, dapat menggunakan sub rutin berikut ini :
'digunakan setelah database dibuat
Public Function KonekFB1() As Boolean
If conn.State = ConnectionState.Open Then
conn.Close()
End If
conn.ConnectionString = str1
Try
conn.Open()
cmd.Connection = conn
Return True
Catch ex As Exception
conn.Close()
Return False
End Try
End Function)
Setelah terkoneksi, maka untuk melakukan query dan menampilkan data ke dalam datagrid dapat menggunakan sub rutin berikut ini :
Public Function ViewTabel(ByVal namadatatable As String, ByVal namaDG As DataGridView, ByVal query As String) As Boolean
If conn.State = ConnectionState.Open Then
conn.Close()
End If
conn.ConnectionString = str1
Try
conn.Open()
cmd.Connection = conn
cmd.CommandText = query
dspg = New DataSet("namadataset")
dapg = New NpgsqlDataAdapter(cmd)
dapg.Fill(dspg, namadatatable)
namaDG.DataSource = dspg.Tables(namadatatable)
namaDG.AutoGenerateColumns = True
conn.Close()
Catch ex As Exception
conn.Close()
End Try
End Function
Kemudian lakukan pemanggilan untuk sub-rutin KonekFB1() dan ViewTabel()
'melakukan koneksi dengan postgre server
KonekFB1()
'melakukan query table dan menampilkan ke dalam datagrid
ViewTabel("coba1", dg, "select * from " & Chr(34) & "TABLE1" & Chr(34))
Rutin untuk pembuatan database secara runtime adalah sebagai berikut ini :
Private Sub cmd_CreateDB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_CreateDB.Click
If CmdSQL2("CREATE DATABASE " & Chr(34) & "coba" & Chr(34) & " With Owner = postgres ENCODING = 'UTF8' TABLESPACE = pg_default CONNECTION LIMIT = -1") = False Then MsgBox("Periksa kembali nama database, pastikan nama database belum terdaftar di server")
End Sub
Rutin untuk pembuatan table secara runtime adalah sebagai berikut ini :
Private Sub cmd_CreateTable_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_CreateTable.Click
If CmdSQL1(" CREATE TABLE " & Chr(34) & "TABLE1" & Chr(34) & "(" & _
Chr(34) & "Column1" & Chr(34) & " integer NOT NULL," & _
Chr(34) & "Column2" & Chr(34) & " character(20)," & _
"CONSTRAINT " & Chr(34) & "LOGGER_pkey" & Chr(34) & " PRIMARY KEY (" & Chr(34) & "Column1" & Chr(34) & " ));") = False Then MsgBox("Periksa kembali nama tabel, pastikan nama tabel belum terdaftar di database")
End Sub
Rutin untuk pengisian data dummy adalah sebagai berikut ini :
Private Sub cmd_CreateDataDummy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_CreateDataDummy.Click
Dim baris1 As Integer = 0
Dim baris2 As String = Nothing
For i = 0 To 99
baris1 += 1
baris2 = "Baris" & baris1
If CmdSQL1(" INSERT INTO " & Chr(34) & "TABLE1" & Chr(34) & " VALUES (" & baris1 & ",'" & baris2 & "')") = False Then
MsgBox("Periksa kembali nama tabel, pastikan nama tabel belum terdaftar di database")
Exit For
End If
Next
ViewTabel("coba1", dg, "select * from " & Chr(34) & "TABLE1" & Chr(34))
End Sub
Berikut ini tampilan dari program yang telah tersebut.
Adapun data tersebut dapat dilihat pada program pgadmin (GUI untuk database PostgreSQL)
Bagaimana, mudah bukan?
Berikut ini link dari contoh program tersebut.
conn = new NpgsqlConnection
ReplyDeletegan cmd itu apaan?
ReplyDeletecoba lihat dibagian atas sendiri dari file Form1.vb
Deletepada bagian atas ada deklarasi cmd sebagai NpsqlCommand:
Dim cmd As New NpgsqlCommand
jangan bingung dengan cmd_CreateDB_Click, cmd_CreateTable_Click ataupun cmd_CreateDataDummy_Click.
cmd ini karena penamaan button saya menggunakan awalan cmd, bukan btn.
obat diabetes asli
ReplyDeleteobat diabetes denature
obat ampuh diabetes
obat ampuh diabetes
obat diabetes jos
keren gan, boleh kirimi contoh pegogram gan? saya ganti denga pulsa :)
ReplyDeleteJazakallah khoir. Bisa minta alamat email, email saya toekangpin@gmail.com
ReplyDeleteAssalamu'alaikum...
ReplyDeleteTerima Kasih Sebelumnya.
Mas Dhanny, izin download ya.
Thanks for taking the time to discuss this, I feel strongly about it and love learning more on this topic. If possible, as you gain expertise, would you mind updating your blog with extra information? It is extremely helpful for me. PostgreSQL NULL value
ReplyDelete