28 Agt 2013

Pengolahan Database pada VB.NET

Sebuah Sistem aplikasi tak luput dari  database, sekarang kita akan mendiskusikan bagaimana mengkone... thumbnail 1 summary
Sebuah Sistem aplikasi tak luput dari  database, sekarang kita akan mendiskusikan bagaimana mengkoneksikan database pada VB.NET
Banyak database engine yang support dengan VB.NET, Microsoft SQL Server, MySQL, Microsoft Access, Oracle, Postgre SQL dan lain-lain.
Namun untuk menghubungkan VB.NET dengan database diperlukan sebuah Connection String.

Apa itu Connection String ?
Connection String adalah sebuah tipe data string yang dijadikan sebagai penghubung antara database dan project/kode.

Untuk informasi Connection String lebih lanjut , anda bisa mengunjungi website yang mendalami ilmu tersebut
http://www.connectionstrings.com/ (Jadi untuk Connection String dibaca dulu)


Beberapa cara untuk mengkoneksikan database , yaitu dengan komponen (ADODC,DAO,dll) ataupun dengan kode. Yang kita diskusikan pada artikel ini adalah dengan menggunakan kode.
Jika pada Visual Basic anda menggunakan ADODC, bisa dipertimbangkan lagi bagaimana setiap form diisi dengan komponen tersebut. Bisa dibilang aplikasi jadi lebih berat kan?

Diskusi ini mungkin dapat mengubah cara pengkodean anda. Kenapa ?


Terbayang tidak begitu ribetnya masukin komponen setiap Form ?

Lalu bagaimana bentuk dari handcode/kode tersebut ?

Contoh :
Saya mengkoneksikan project VB.NET dengan database SQL Server Database File dengan sebuah module yang bernama ModDatabase, berikut source code nya :
Imports System.Data.SqlClient
Imports System.Data.SqlClient.SqlCommandBuilder
Module ModDatabase
    Public con As SqlClient.SqlConnection
    Public cmd As SqlClient.SqlCommand
    Public dtr As SqlClient.SqlDataReader
    Dim mydatatable As DataTable
    Dim adapter As SqlClient.SqlDataAdapter
    Private bindingSource1 As New BindingSource()

Public Function OpenDB() As Boolean
        con = New SqlClient.SqlConnection
        con.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename="D:\data.mdf";Integrated Security=True;User Instance=True"
        Try
            con.Open()
            Return True
        Catch ex As Exception
            MsgBox("Terjadi Error : " & ex.Message)
            Return False
        End Try
    End Function

Public Sub _ComboData(ByVal sql As String, ByVal obj As Object)
        OpenDB()
        cmd = New SqlClient.SqlCommand(sql, con)
        Try
            obj.Items.Clear()
            dtr = cmd.ExecuteReader
            While dtr.Read()
                obj.Items.Add(dtr.Item(0).ToString)
            End While
        Catch ex As Exception
            MsgBox("Terjadi Error : " & ex.Message)
        Finally
            con.Close()
            con = Nothing
        End Try
    End Sub

    Public Sub _TableData(ByVal sql As String, ByVal obj As Object)
        OpenDB()
        cmd = New SqlClient.SqlCommand(sql, con)
        Try
            'obj.DataSource = Nothing
            dtr = cmd.ExecuteReader
            obj = New DataTable
            obj.Load(dtr)
        Catch ex As Exception
            MsgBox("Terjadi Error : " & ex.Message)
        Finally
            dtr.Close()
            con.Close()
        End Try
    End Sub

    Public Function _DataToValue(ByVal sql As String) As String
        OpenDB()
        cmd = New SqlClient.SqlCommand
        Try
            Dim p As String
            p = ""
            cmd.Connection = con
            cmd.CommandType = CommandType.Text
            cmd.CommandText = sql
            dtr = cmd.ExecuteReader
            If dtr.HasRows Then
                dtr.Read()
                p = (dtr.Item(0))
            End If
            Return p.ToString
        Catch ex As Exception
            Return ex.Message
        Finally
            'dtr.Close()
            con.Close()
        End Try
    End Function

Public Sub _RunSQL(ByVal sql As String)
        OpenDB()
        cmd = New SqlClient.SqlCommand(sql, con)
        Try
            cmd.ExecuteNonQuery()
        Catch ex As Exception
            MsgBox(ex.Message)
        Finally
            con.Close()
        End Try
    End Sub

Function _isBOF(ByVal table As String, ByVal field As String, ByVal whereValue As String) As Boolean
        Dim p As Integer
        p = _DataToValue("Select count(" & field & ") from " & table & " Where " & field & "='" & whereValue & "'")
        If p < 1 Then
            Return True
        Else
            Return False
        End If
    End Function

End Module

Lihat yang saya bold pada kode di atas. Semua bisa anda gunakan pada semua form.

1. OpenDB() As Boolean
Fungsi ini berguna untuk membuka database, namun outputnya sebagai boolean (true/false), anda bisa menggunakan untuk cek koneksi database. Contoh kode :
if OpenDB=false then
   msgbox "Tidak tersambung ke database"
else
  msgbox "Tersambung"
end if

2. _ComboData(ByVal sql As String, ByVal obj As Object)
Fungsi ini berguna jika anda ingin mengisi sebuah combobox dengan isi field pada database. Contoh :
_ComboData("Select nama_barang from barang",Me.ComboBox1)
3. _TableData(ByVal sql As String, ByVal obj As Object)
Pernahkah anda membuat kode untuk menampilkan data pada DataGridView? Panjang bukan? Nah, fungsi ini berguna untuk menampilkan data pada DataGridView dengan cepat, hanya 1 baris kode saja. Contoh :
_TableData("Select * from barang",Me.DataGridView1)

4. _DataToValue(ByVal sql As String) As String
Jika anda hanya menginginkan output 1 data bertipe string saja, maka anda membutuhkan fungsi ini.
Contoh event klik saat combobox yang menampilkan nama barang pada TextBox1 menampilkan kode barangnya :
Me.TextBox1.Text = _DataToValue("Select kode_barang from Barang Where nama_barang='" & Me.ComboBox1.Text & "'")
Pengkodean (kutip_satu)(kutip_dua) & komponen & (kutip_dua)(kutip_satu) membedakan yang mana kode sql dan yang mana komponen VB.NET



5. _RunSQL(ByVal sql As String)
Mengalami Insert,Edit,Delete yang kodenya ribet? Cukup panggil fungsi ini , Contoh :

_RunSQL("Insert into barang (kode_barang,nama_barang) values ('" & Me.ComboBox1.Text & "','" & Me.TextBox1.Text & "')")

_RunSQL("Update barang Set nama_barang='" & Me.TextBox1.Text & "' Where kode_barang='" & Me.ComboBox1.Text & "'")

_RunSQL("Delete from barang Where kode_barang='" & Me.ComboBox1.Text & "'")

6. _isBOF(ByVal table As String, ByVal field As String, ByVal whereValue As String) As Boolean
Gunakan fungsi ini untuk mengecek data ada atau tidak , Contoh :

if _isBOF("barang","kode_barang","0001")=false Then
    msgbox("Barang tidak ada")
Else
    msgbox("Barang Ada")
End If

Postingan ini tidak bertujuan untuk meniru ataupun harus mengikuti kode saya. Namun saya mengharapkan jika anda semua dapat merangkum semua kebutuhan aktif menjadi satu ruang.
Berikut saya share module file nya, di dalam paket ada koneksi dengan SQL Server dan MySQL