DataSet objek, bagian penting dari akses data di Microsoft.NET
Kerangka, objek dalam memori yang dapat menampung meja, pandangan, dan
hubungan. Artikel ini menunjukkan bagaimana untuk mengambil
DataSet yang berisi data (yang diambil dari database), memodifikasi yang
data, dan kemudian mengirim kembali ke database untuk memperbarui asli
sumber.
Persyaratan
Daftar berikut menguraikan fitur perangkat keras, perangkat lunak,
jaringan infrastruktur, dan paket layanan yang Anda butuhkan:
- Microsoft Windows 2000 Professional, Windows 2000 Server,
Windows 2000 Advanced Server, atau Windows NT 4.0 Server
- Microsoft SQL Server versi 7.0 atau 2000 atau Microsoft Data
(MSDE) dengan mesin database contoh pub diinstal
- Microsoft Visual Studio.NET
- Izin yang sesuai dan nilai-nilai yang benar untuk
menghubungkan ke komputer yang menjalankan SQL Server
Artikel ini mengasumsikan bahwa Anda sudah familiar dengan berikut
topik:
- Database terminologi
- Structured Query Language (SQL)
Cara update database dari objek DataSet
Bagian ini menunjukkan bagaimana untuk menggunakan
DataSet objek untuk memperbarui data dalam database. Sangat penting untuk mengingat
yang Anda juga dapat menggunakan
SqlCommand objek untuk memasukkan, update, dan menghapus data dalam database
langsung.
Untuk membantu Anda memahami artikel ini, klik artikel
nomor di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
301216
(http://support.microsoft.com/kb/301216/
)
Cara mengisi DataSet objek dari database dengan menggunakan Visual Basic.NET
Beberapa topik yang dibahas di
301216
(http://support.microsoft.com/kb/301216/EN-US/
)
termasuk cara untuk mengambil data dari database
dan ke
DataSet, dan bagaimana
DataSet terpisah dan berbeda dari database.
Setelah
DataSet load, Anda dapat mengubah data, dan
DataSet akan melacak perubahan. The
DataSet objek dapat dianggap cache di memori data yang
Diperoleh dari database dan terdiri dari koleksi tabel,
hubungan, dan kendala.
Untuk memperbarui
DataSet dan mengirim pembaruan tersebut kembali ke database, ikuti langkah berikut:
- Buka Microsoft Visual Studio.NET.
- Membuat aplikasi konsol baru dalam Visual Basic.NET. Oleh
default, Visual Studio menciptakan modul statis dan kosong Main() prosedur.
- Pastikan bahwa proyek berisi referensi untuk Sistem dan System.data namespaces. Penggunaan Impor pernyataan di Sistem, SystemData, dan System.data.SqlClient namespaces sehingga Anda tidak perlu memenuhi syarat Deklarasi
dari ruang nama ini kemudian dalam kode Anda. Anda harus menggunakan ini sebelum pernyataan
untuk deklarasi lain.
Imports System
Imports System.Data
Imports System.Data.SqlClient
- Sebelum Anda dapat memodifikasi data dan menyerahkan perubahan kembali
ke database, Anda harus memuat informasi ke dalam DataSet. Untuk prosedur yang rinci, lihat301216
(http://support.microsoft.com/kb/301216/EN-US/
)
. Untuk menghindari duplikasi kode dalam langkah ini
tidak disajikan secara rinci.
Rangkaian sambungan di berikut
kode poin ke SQL Server yang berlokasi di komputer lokal (atau
komputer di mana kode berjalan). Mengganti string ini dengan Anda sendiri
pengaturan, jika diperlukan. Untuk meringkas, sambungan dibuat, dan kemudian data
adaptor dibuat, yang digunakan untuk mengisi DataSet dengan data.
Catatan Dalam kode contoh yang ditampilkan dalam artikel ini, Anda harus mengubah UID =UserName dan Password =StrongPassword untuk nilai-nilai yang benar. Pastikan bahwa ID pengguna memiliki
izin yang sesuai untuk melakukan operasi ini pada database.
Dim sConnectionString As String
' Modify the following code to correctly connect to your SQL Server.
sConnectionString = "Password=StrongPassword;User ID=UserName;" & _
"Initial Catalog=pubs;" & _
"Data Source=(local)"
Dim objConn As New SqlConnection(sConnectionString)
objConn.Open()
' Create an instance of a DataAdapter.
Dim daAuthors As _
New SqlDataAdapter("Select * From Authors", objConn)
' Create an instance of a DataSet, and retrieve data from the Authors table.
Dim dsPubs As New DataSet("Pubs")
daAuthors.FillSchema(dsPubs, SchemaType.Source, "Authors")
daAuthors.Fill(dsPubs, "Authors")
- Sekarang bahwa data dimuat, Anda dapat mengubahnya. Ada
banyak cara untuk menambahkan baris (atau catatan). Sampel kode ini menggunakan tiga langkah
prosedur:
- Mendapatkan yang baru DataRow objek dari DataTable.
- Menetapkan DataRow nilai-nilai bidang yang diperlukan.
- Pass objek baru ke Tambahkan metode DataTable.Rows Koleksi.
Paste kode berikut setelah kode dalam langkah 4:
'*****************
'BEGIN ADD CODE
' Create a new instance of a DataTable.
Dim tblAuthors As DataTable
tblAuthors = dsPubs.Tables("Authors")
Dim drCurrent As DataRow
' Obtain a new DataRow object from the DataTable.
drCurrent = tblAuthors.NewRow()
' Set the DataRow field values as necessary.
drCurrent("au_id") = "993-21-3427"
drCurrent("au_fname") = "George"
drCurrent("au_lname") = "Johnson"
drCurrent("phone") = "800 226-0752"
drCurrent("address") = "1956 Arlington Pl."
drCurrent("city") = "Winnipeg"
drCurrent("state") = "MB"
drCurrent("contract") = 1
'Pass that new object into the Add method of the DataTable.Rows collection.
tblAuthors.Rows.Add(drCurrent)
MsgBox("Add was successful.")
'END ADD CODE
- Untuk mengedit ada baris, Dapatkan yang sesuai DataRow objek, dan kemudian memberikan nilai-nilai baru untuk satu atau lebih kolom. Anda
pertama harus menemukan baris yang benar, yang adalah jauh lebih mudah karena Anda dimuat
skema dari tabel sebagai data (panggilan untuk FillSchema pada langkah 4). Dengan skema di tempat, meja tahu yang
kolom adalah primary key, dan Menemukan metode Baris Koleksi tersedia.
The Menemukan metode kembali DataRow objek dengan nilai tertentu di primary key (dalam hal ini,
au_id). Setelah Anda memiliki DataRow, Anda dapat mengubah kolom. Anda tidak perlu untuk membungkus
modifikasi dalam BeginEdit dan EndEdit, tapi ini menyederhanakan pekerjaan yang DataSet yang harus dilakukan dan memungkinkan DataSet untuk melakukan validasi yang memeriksa sekaligus atas EndEdit panggilan. Paste kode berikut setelah kode ADD:
'*****************
'BEGIN EDIT CODE
drCurrent = tblAuthors.Rows.Find("213-46-8915")
drCurrent.BeginEdit()
drCurrent("phone") = "342" & drCurrent("phone").ToString.Substring(3)
drCurrent.EndEdit()
MsgBox("Record edited successfully")
'END EDIT CODE
- Untuk update database asli dengan semua perubahan ini,
lulus DataSet ke Pemutakhiran metode DataAdapter objek.
Namun, sebelum Anda dapat memanggil Pemutakhiran, Anda harus mengatur InsertCommand, UpdateCommand, dan DeleteCommand sifat DataAdapter objek. Anda dapat secara manual menulis SQL dan mengisi ini tiga
properti dengan sesuai SqlCommand objek, namun Anda juga dapat menggunakan Visual Studio.NET untuk menghasilkan
ketiga perintah secara otomatis.
Untuk menghasilkan perintah diperlukan
ketika mereka dibutuhkan, Anda harus membuat sebuah instance dari SqlCommandBuilder objek dan menggunakan DataAdapter dalam konstruktor. Jika Anda ingin menggunakan metode ini, yang
digambarkan dalam contoh kode untuk mengikuti, Anda harus memiliki informasi kunci utama
tersedia untuk meja Anda. Untuk mengakses informasi kunci utama, panggilan FillSchema, dan kemudian menetapkan MissingSchemaAction milik Anda DataAdapter untuk AddWithKey, atau ditetapkan secara manual primary key dalam kode Anda. Pasta
kode berikut setelah MENGEDIT kode:
'*****************
'BEGIN SEND CHANGES TO SQL SERVER
Dim objCommandBuilder As New SqlCommandBuilder(daAuthors)
daAuthors.Update(dsPubs, "Authors")
MsgBox("SQL Server updated successfully" & chr(13) & "Check Server explorer to see changes")
' END SEND CHANGES TO SQL SERVER
- Untuk menghapus sebuah baris sepenuhnya, gunakan Hapus metode DataRow objek. Perhatikan bahwa Baris Koleksi berisi dua metode, Hapus dan RemoveAt, yang tampaknya menghapus baris tetapi sebaliknya hanya menghapus baris
dari koleksi. Hanya Hapus metode yang mengirimkan penghapusan Anda kembali ke basis data sumber. Pasta
kode berikut setelah kode Kirim perubahan ke SQL SERVER:
'*****************
'BEGIN DELETE CODE
drCurrent = tblAuthors.Rows.Find("993-21-3427")
drCurrent.Delete()
MsgBox("Record deleted successfully")
'END DELETE CODE
- Kirim perubahan ke SQL Server untuk menghapus catatan yang
Anda ditambahkan sebelumnya. Paste kode berikut setelah menghapus kode:
'*****************
' CLEAN UP SQL SERVER
daAuthors.Update(dsPubs, "Authors")
MsgBox("SQL Server updated successfully" & Chr(13) & Chr(13) & "Check Server Explorer to see changes")
- Menyimpan proyek Anda.
- Pada Debug menu, klik Mulai untuk menjalankan proyek. Perhatikan bahwa beberapa kotak pesan muncul,
yang menunjukkan kemajuan kode dan memungkinkan Anda untuk meninjau saat ini
negara data sebagai kemajuan kode.
Daftar kode lengkap
Imports System
Imports System.Data
Imports System.Data.SqlClient
Module Module1
Sub Main()
Dim sConnectionString As String
' Modify the following code to correctly connect to your SQL Server.
sConnectionString = "Password=StrongPassword;User ID=UserName;" & _
"Initial Catalog=pubs;" & _
"Data Source=(local)"
Dim objConn As New SqlConnection(sConnectionString)
objConn.Open()
' Create an instance of a DataAdapter.
Dim daAuthors As _
New SqlDataAdapter("Select * From Authors", objConn)
' Create an instance of a DataSet, and retrieve data from the Authors table.
Dim dsPubs As New DataSet("Pubs")
daAuthors.FillSchema(dsPubs, SchemaType.Source, "Authors")
daAuthors.Fill(dsPubs, "Authors")
'*****************
'BEGIN ADD CODE
' Create a new instance of a DataTable
Dim tblAuthors As DataTable
tblAuthors = dsPubs.Tables("Authors")
Dim drCurrent As DataRow
' Obtain a new DataRow object from the DataTable.
drCurrent = tblAuthors.NewRow()
' Set the DataRow field values as necessary.
drCurrent("au_id") = "993-21-3427"
drCurrent("au_fname") = "George"
drCurrent("au_lname") = "Johnson"
drCurrent("phone") = "800 226-0752"
drCurrent("address") = "1956 Arlington Pl."
drCurrent("city") = "Winnipeg"
drCurrent("state") = "MB"
drCurrent("contract") = 1
'Pass that new object into the Add method of the DataTable.Rows collection.
tblAuthors.Rows.Add(drCurrent)
MsgBox("Add was successful.")
'END ADD CODE
'*****************
'BEGIN EDIT CODE
drCurrent = tblAuthors.Rows.Find("213-46-8915")
drCurrent.BeginEdit()
drCurrent("phone") = "342" & drCurrent("phone").ToString.Substring(3)
drCurrent.EndEdit()
MsgBox("Record edited successfully")
'END EDIT CODE
'*****************
'BEGIN SEND CHANGES TO SQL SERVER
Dim objCommandBuilder As New SqlCommandBuilder(daAuthors)
daAuthors.Update(dsPubs, "Authors")
MsgBox("SQL Server updated successfully" & chr(13) & "Check Server explorer to see changes")
' END SEND CHANGES TO SQL SERVER
'*****************
'BEGIN DELETE CODE
drCurrent = tblAuthors.Rows.Find("993-21-3427")
drCurrent.Delete()
MsgBox("Record deleted successfully")
'END DELETE CODE
'*****************
' CLEAN UP SQL SERVER
daAuthors.Update(dsPubs, "Authors")
MsgBox("SQL Server updated successfully" & Chr(13) & Chr(13) & "Check Server Explorer to see changes")
End Sub
End Module
Untuk informasi lebih lanjut tentang menggunakan ADO.NET,
DataSet benda, dan SQL, lihat Website Microsoft berikut:
Untuk lebih banyak informasi umum tentang Visual Basic.NET dan ADO.NET,
Lihat newsgroup MSDN berikut:
Microsoft.Public.DotNet.Languages.VB
(http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?query=ADO.NET&dg=&cat=en_US_d02fc761-3f6b-402c-82f6-ba1a8875c1a7&lang=en&cr=&pt=&catlist=&dglist=&ptlist=&exp=&sloc=en-us)
Microsoft.Public.DotNet.Framework.adonet
(http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?query=Visual+Basic+.NET+&dg=&cat=en_US_d02fc761-3f6b-402c-82f6-ba1a8875c1a7&lang=en&cr=&pt=&catlist=&dglist=&ptlist=&exp=&sloc=en-us)
ID Artikel: 301248 - Kajian Terakhir: 24 September 2011 - Revisi: 2.0
Berlaku bagi:
- Microsoft Visual Basic .NET 2002 Standard Edition
- Microsoft Visual Basic .NET 2003 Standard Edition
| kbhowtomaster kbmt KB301248 KbMtid |
Penerjemahan MesinPENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:
301248
(http://support.microsoft.com/kb/301248/en-us/
)