Menu Horisontal

Senin, 15 September 2014

Membuat dan Menambah Data di DataSet di VB.net

Sumber : http://angkringankode.wordpress.com/2011/03/23/membuat-dan-menambah-data-di-dataset/

Dataset adalah objek yang merepresentasikan data dan relasinya di memory. Strukturnya mirip dengan data di database. Dataset berisi koleksi dari datatable dan datarelation. Berikut adalah contoh dataset sederhana. Dataset Administrasi terdiri dari 2 datatable, Propinsi dan Kabupaten. Kedua datatable saling berhubungan melalui datarelation ‘propinsi-kabupaten’.
Biasanya relasi tabel seperti ini dibuat di database. Untuk dataset, bisa dibuat secara langsung menggunakan schema dengan menambahkan file dataset (xsd) di aplikasi. Baca artikel saya yang ini. Berikut ini adalah cara lain untuk membuat dataset, by code, berdasarkan diagram diatas.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Private Function GetDataSet() As dataset
    'buat dataset baru dengan nama 'Administrasi'
    Dim adm As New DataSet("Administrasi")
    'buat datatable di dalam dataset dengan nama 'propinsi'
    Dim propinsi As DataTable = adm.Tables.Add("Propinsi")
    'buat kolom2 dalam tabel propinsi
    propinsi.Columns.Add("id", GetType(Integer))
    propinsi.Columns.Add("Nama", GetType(String))
    'set kolom id sebagai primary key
    propinsi.PrimaryKey = New DataColumn() {propinsi.Columns("id")}
    'buat datatable kedua dalam dataset dengan nama 'kabupaten'
    Dim kabupaten As DataTable = adm.Tables.Add("Kabupaten")
    'buat kolom2 dalam tabel kabupaten
    kabupaten.Columns.Add("idProp", GetType(Integer))
    kabupaten.Columns.Add("idKab", GetType(Integer))
    kabupaten.Columns.Add("Nama", GetType(String))
    'set kolom idprop dan idkab sebagai primary key
    kabupaten.PrimaryKey = New DataColumn() {kabupaten.Columns("idProp"), kabupaten.Columns("idKab")}
    'buat relasi antara tabel propinsi dan kabupaten
    Dim Relasi As New DataRelation("propinsi_kabupaten", propinsi.Columns("id"), kabupaten.Columns("idProp"))
    adm.Relations.Add(Relasi)
    Return adm
End Function
Untuk menambahkan data kedalam datatable, tabel propinsi perlu diisi terlebih dahulu karena adanya relasi antara tabel propinsi dan kabupaten.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Dim ds As DataSet = GetDataSet()
Dim dtpropinsi As DataTable = ds.Tables("Propinsi")
Dim dtkabupaten As DataTable = ds.Tables("Kabupaten")
'menambah data ke table propinsi
Dim rowPropinsi As DataRow = dtpropinsi.NewRow()
rowPropinsi("id") = 31
rowPropinsi("Nama") = "DKI Jakarta"
dtpropinsi.Rows.Add(rowPropinsi)
'menambah data ke tabel kabupaten
Dim rowkabupaten As DataRow = dtkabupaten.NewRow()
rowkabupaten("idProp") = 31
rowkabupaten("idKab") = 71
rowkabupaten("Nama") = "Jakarta Selatan"
dtkabupaten.Rows.Add(rowkabupaten)
rowkabupaten = dtkabupaten.NewRow()
rowkabupaten("idProp") = 31
rowkabupaten("idKab") = 72
rowkabupaten("Nama") = "Jakarta Timur"
dtkabupaten.Rows.Add(rowkabupaten)
rowkabupaten = dtkabupaten.NewRow()
rowkabupaten("idProp") = 31
rowkabupaten("idKab") = 73
rowkabupaten("Nama") = "Jakarta Pusat"
dtkabupaten.Rows.Add(rowkabupaten)
Contoh diatas berjalan dengan baik, datatable dan kolomnya diakses berdasarkan string nama. Namun jika nama tabel atau nama kolom salah tulis, pasti akan muncul error. Ini akan merepotkan kalau dataset yang dibuat cukup besar, karena nama tabel dan nama-nama kolom di datatable harus ditulis secara tepat.
Cara lain yang lebih aman adalah dengan membuat strong typed dataset. Dengan strong type dataset, nama tabel dan kolom akan dedefinisikan sebagai property. Sehingga untuk mengkases datatable propinsi menjadi
Dim dtpropinsi As DataTable = Admin.Propinsi
Untuk membuat strong typed dataset diperlukan XML Schema. Berdasarkan dataset yang kita buat sebelumnya, kita cukup menjalankan method WriteXmlSchema()
1
2
3
Dim ds As DataSet = GetDataSet()
Dim fileschema As String = Server.MapPath("App_Code\Administrasi.xsd")
ds.WriteXmlSchema(fileschema)
Berikut contoh kode untuk menambahkan data ke dataset berdasarkan schema yang terbentuk.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Dim admin As New Administrasi
'menambah data ke table propinsi
Dim rowPropinsi As Administrasi.PropinsiRow = admin.Propinsi.AddPropinsiRow(31, "DKI Jakarta")
'menambah data ke tabel kabupaten
Dim rowkabupaten As Administrasi.KabupatenRow = admin.Kabupaten.NewRow()
rowkabupaten.PropinsiRow = rowPropinsi
rowkabupaten.idKab = 71
rowkabupaten.Nama = "Jakarta Selatan"
admin.Kabupaten.AddKabupatenRow(rowkabupaten)
rowkabupaten = admin.Kabupaten.NewRow()
rowkabupaten.PropinsiRow = rowPropinsi
rowkabupaten.idKab = 72
rowkabupaten.Nama = "Jakarta Timur"
admin.Kabupaten.AddKabupatenRow(rowkabupaten)
rowkabupaten = admin.Kabupaten.NewRow()
rowkabupaten.PropinsiRow = rowPropinsi
rowkabupaten.idKab = 73
rowkabupaten.Nama = "Jakarta Pusat"
admin.Kabupaten.AddKabupatenRow(rowkabupaten)
Bandingkan antara cara kedua ini dengan cara pertama. Cara kedua lebih aman, karena untuk mengakses datatabel dan kolom tidak lagi mengacu pada string ‘nama’.
Masih banyak hal tentang dataset yang tidak ditulis disini. Semoga bisa dituliskan lain kali.
Semoga bermanfaat. Happy coding
Baca Juga dari Sumber diatas :
http://angkringankode.wordpress.com/2010/01/19/membuat-file-excel-dari-datatable/
http://angkringankode.wordpress.com/2009/10/14/transfer-data-dari-excell-ke-database/