[Visual Basic 2005] - Binding Data Tanpa DataSet maupun DataAdapter

Senin, Maret 17, 2008 | | Comments

.NET Framework menyediakan model data yang dapat digunakan sebagai cache data sementara dari database dan me-load nya ke memori lokal yaitu DataSet. Developer seringkali menggunakan data model ini untuk menampung hasil data dari query yang kemudian diolah lebih lanjut, misal, binding ke DataGridView atau ComboBox.

Permasalahannya, karena Microsoft telah menyediakan komponen-komponen dan class yang bertugas untuk melakukan binding data-data tersebut, akhirnya mau tidak mau kita tergantung kepada aturan dari komponen-komponen tersebut dan ini sedikit ribet jika data yang akan kita binding harus dilakukan pengolahan terlebih dahulu. Lebih banyak hapalannya daripada logikanya. Bahkan query yang biasa dilakukan misal, Inner-Join pun harus dilakukan dengan aturan parent-child ala DataSet yang menurut saya kurang intuitif.

Bayangkan jika data yang kita bind ke DataGridView harus dihitung dulu, diterjemahkan ke kata-kata lain, diubah dalam ComboBox kemudian menentukan SelectedIndex nya, CheckBox, dan sebagainya.

Ada alternatif lain yang mungkin sedikit melanggar “aturan resmi” yaitu melakukan fetching data dengan OdbcDataReader.

  1. Misal kita punya tabel :
CREATE TABLE student (


ID int,


nama varchar(100) default ‘0′,


alamat varchar(200) default ”,


telp varchar(30) default ”,


sex int default ‘0′


)






  • Untuk contoh datanya, masukkan data-data sembarang, dengan beberapa jenis kelamin yang berbeda. Kita tentukan saja jenis kelamin yaitu “0″ untuk pria dan “1″ untuk wanita.


    2. Kemudian kita buat form, kita kasih nama “ViewDataSiswa” dengan komponen2 sebagai berikut :





    • DataGridView kita beri nama DataGridSiswa


      Kita tambahkan komponen2 Column sebagai berikut :


      Column :




      Beri nama masing-masing column tersebut : colID, colNama, colAlamat, colTelp, colSex, colCmbDelete

      Khusus untuk colSex yang bertipe DataGridViewComboBoxColumn, tambahkan Item yang berisi : “Pria” dan “Wanita”





    • Button kita beri nama btnDelete




    3. Selanjutnya kita buat Class ProsesData sebagai berikut.

    Note : dalam eksperimen kali ini kita menggunakan ADO ConnectionString untuk koneksi ke databasenya. Buka Artikel saya sebelumnya Disini untuk penjelasan mengenai ADO ConnectionString






    Imports System.Data.Odbc Public Class ProsesData


     


    Public connString As String = _


    “Driver={MySQLODBC5.1Driver};” & _


    “Server=localhost;” & _


    “Database=db_windowsapplication;” & _


    “User=root;” & _


    “Password=;” & _


    Option=4;”


     


    Dim conn As New OdbcConnection(connString)


    Dim reader As OdbcDataReader


     


    ‘ambil data dari tabel student


    Public Sub viewStudent(ByVal varDataGridView As DataGridView)


     


    Dim sql As String = “SELECT * FROM student”


    Dim hasil As String = “”


    Dim i As Integer = 0


     


    Try


    conn.Open()


    Dim cmd As OdbcCommand = New OdbcCommand(sql, conn)


    reader = cmd.ExecuteReader()


     


    While reader.Read


    If reader.HasRows = True Then


    With varDataGridView


    .Rows.Add()


    .Rows(i).Cells(”colID”).Value = reader.GetValue(0).ToString


    .Rows(i).Cells(”colNama”).Value = reader.GetValue(1).ToString


    .Rows(i).Cells(”colAlamat”).Value = reader.GetValue(2).ToString


    .Rows(i).Cells(”colTelp”).Value = reader.GetValue(3).ToString


    .Rows(i).Cells(”colSex”).Value = Me.detectSexToView(reader.GetValue(4).ToString)


    i = i + 1


    End With


    End If


    End While


     


    Catch ex As Exception


    MsgBox(ex.Message & ” SQL : ” & sql)


    End Try


     


    End Sub


     


    ‘deteksi Sex dari 1 atau 0 ke Pria atau Wanita


    Function detectSexToView(ByVal varSex As Integer) As String


     


    If (varSex = 1) Then


    Return “Pria”


    Else


    Return “Wanita”


    End If


    End Function





    4. Oke, kita telah membuat inti dari pembahasan kali ini. Sekarang pada form yang telah kita buat tadi tambahkan kode berikut :






    Private Sub ViewDataSiswa_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


    Dim proses as New ProsesData proses.viewStudent(DataGridSiswa)


    End Sub





    5. Compile project dan lihat hasilnya.Yang perlu diamati dari kode diatas antara lain :






    .Rows(i).Cells(”colID”).Value = reader.GetValue(0).ToString





    yak, kode diataslah yang berfungsi mem-fetch data langsung dari database ke column-column pada DataGridView. Pada parameter method GetValue() kenapa ada angka? itu adalah urutan column atau field pada table dimulai dari field paling kiri. Urutan ini diawali dengan nol.



    Kemudian ada lagi :






    .Rows(i).Cells(”colSex”).Value = Me.detectSexToView(reader.GetValue(4).ToString)





    nah kode diatas berfungsi mengubah angka 1 dan 0 pada field sex untuk dijadikan ComboBox dengan value “Pria” dan “Wanita”. Lebih Sederhana dan fleksibel bukan, dibandingkan dengan harus melakukan binding “standard” menggunakan DataSet.



    Sekian dulu tutorial kali ini, simpan Form ini untuk kita gunakan pada tutorial berikutnya, yaitu Menghapus Row pada DataGridView dengan Seleksi CheckBox. C U…




  • source : renxe.wordpress.com