.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.
- 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′
)
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