Tujuan :
Materi :
Persiapan
• Membaca buku literature, referensi atau dari sumber lain tentang Pemroggraman Database dan
C#
• Modul Praktikum V
Landasan Teori
DataAdapter
ADO.NET mempunyai dua cara untuk menerima data dari database yaitu menggunakan
DataReader yang kita gunakan pada bab sebelumnya. Sifat dari DataReader ini read-only,
forward-only dan fast-only. DataReader tidak dapat digunakan untuk tujuan mengupdate data.
Keuntungannya menggunakan DataReader adalah resource yang dipakai lebih sedikit. Berbeda
dengan Data Adapter di mana selalu dihubungkan dengan DataSet untuk mengatur data yang
ada di dalam memory. Data Adapter dapat digunakan untuk mengambil data dari database
kemudian ditampung di DataSet. DataSet ini disimpan di dalam memory dan dapat dimanipulasi
dari program, sehingga setelah DataSet terisi oleh data yang dibutuhkan resource untuk
koneksi database dibuang.
Berikut ini adalah contoh code untuk mengambil data menggunakan DataAdapter dan
menampungnya ke DataSet
SqlConnection conn As New SqlConnection(“…..connection string……”);
SqlDataAdapter da As New SqlDataAdapter (“select * from Customers”,conn);
Dataaset ds As New DataSet();
da.fill(ds);
Setiap kita melakukan fill ke DataSet maka di dalamnya akan degenerate sebuah
DataTable. Bisa diambil kesimpulan bahwa dalam suatu DataSet di dalamnya terdiri dari
beberapa DataTable. Masing-masing DataTable tersebut data kita beri nama yang berbeda-
beda. DataSet disimpan di dalam memory dalam bentuk format XML. Selanjutnya aplikasi dapat
mengambil data, menambahkan data, mengubah data, dan menghapus data yang ada di dalam
DataSet. Tentunya prosesnya akan cepat karena data berada di dalam memory, bukan ke
database. Setelah proses selesai pada waktu yang diinginkan kita dapat melakukan operasi
Update untuk mengupdate semua perubahan yang telah dilakukan dalam DataSet, sehingga
data di database dan DataSet sinkron.
DataAdapter
SelectCommand Dataset
Database InsertCommand
UpdateCommand
DeleteCommand
Setelah itu kita dapat menggunakan method Update untuk melakukan Update data dari
DataSet ke database. Method update ini menggunakan parameter DataTable yang ingin
diupdate.
da.Update(dt)
Atau
da.Update(ds.Tables[“Pelanggan”]);
Pada saat method Update dipanggil maka semua DataRow pada DataTable akan dicek satu per
satu RowStatenya. Setiap DataRow memiliki RowState yang berbeda-beda. Pada awalnya
RowStatenya adalah Unchanged. Kemudian setelah data pada DataTable diubah maka
statusnya pun berubah-ubah ada yang Added, Modified, Deleted. Pada saat method update
DataAdapter akan mengecek statusnya masing-masing dan melakukan proses insert,update
atau delete bila dibutuhkan disesuaikan dengan status rownya. Jika menemukan status Added
berarti DataAdapter akan menyuruh InsertCommand untuk melakukan proses insert ke
database demikian pula dengan yang lainnya. Setelah proses Update selesai dan tidak terjadi
masalah maka status pada masing-masing row akan kembali diset menjadi Unchanged.
Setiap data table menyimpan data original dan data current. Data original adalah data yang
sesuai dengan pertama kali DataTable tersebut difill oleh DataAdapter. Sedangkan data current
adalah data yang sedang digunakan atau dapat diubah-ubah.
Untuk mengembalikan data current menjadi data original dapat menggunakan method
RejectChanges. Maka semua data original akan dicopykan dan menimpa data current sehingga
data kembali seperti semula seperti saat pertama kali diload dari database. Kebalikan dari
method ini adalah AcceptChanges di mana semua status pada data current untuk
masingmasing DataRownya dijadikan Unchanged.
Pada saat melakukan perintah Update sebaiknya menggunakan Try-Catch karena pada saat
update dijalankan kemungkinan bisa terjadi Exception yang disebabkan oleh masalah
Concurrency. Ini disebut dengan DBConcurrencyException
Hal ini terjadi pada saat program disconnected data source di mana multiuser sedang berusaha
untuk mengupdate data yang sama. Karena sifatnya yang disconnected maka pengupdatean
data yang dilakukan oleh satu user tidak diketahui oleh user lain hingga user tersebut berusaha
mengupdate dan mendapatkan pesan error. Maka user tersebut harus merefresh kembali data
terakhir dari database dengan cara melakukan fill kembali pada DataTable.
1. Buka project sebelumnya dan Tambahkan Form untuk maintenance data Jadwal
Textbox1
Combobox1
Textbox2
Combobox2
Textbox3
Combobox3
Button DataGridView1
4. Ketik kode program dibawah ini pada form_load. Potongan kode dibawah adalah untuk mengisi
combobox Program dan combobox Tutor dengan data dari tabel ms_program dan tabel ms_tutor
beserta pemanggilan method IsiGridView
5. Pada tombol Simpan, ketik kode program dibawah ini. Potongan kode dibawah adalah alternatif
menyimpan data dengan menggunakan datatable, datarow, datacolumn dan
SqlCommandBuilder
6. Pada tombol Hapus, ketik kode program dibawah ini. Potongan kode dibawah adalah alternatif
menghapus data dengan menggunakan datatable, datarow, datacolumn dan
SqlCommandBuilder
7. Tambahkan kode dibawah ini untuk menampilkan data jadwal setiap kali data jadwal_id
pada Textbox1 dirubah. Lalu tekan TAB.
8. Coba jalankan form Jadwal dan lakukan maintenance data jadwal seperti pada form Grade