Binding Data Tanpa DataSet maupun DataAdapter vb2005

.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 kemudia

soft 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 :
      vb2005snap1.jpgBeri 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 ProsesDataPublic 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. End Class
    <code
  5. 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
    <code
  6. 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…

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: