Cara update database dari objek DataSet dengan menggunakan Visual Basic.NET

ID Artikel: 301248 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

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 Cara mengisi DataSet objek dari database dengan menggunakan Visual Basic.NET
Beberapa topik yang dibahas di 301216 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:
  1. Buka Microsoft Visual Studio.NET.
  2. Membuat aplikasi konsol baru dalam Visual Basic.NET. Oleh default, Visual Studio menciptakan modul statis dan kosong Main() prosedur.
  3. 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
    					
  4. Sebelum Anda dapat memodifikasi data dan menyerahkan perubahan kembali ke database, Anda harus memuat informasi ke dalam DataSet. Untuk prosedur yang rinci, lihat301216. 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")
    					
  5. 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 
    					
  6. 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  
    					
  7. 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
    					
  8. 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
    					
  9. 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")
    					
  10. Menyimpan proyek Anda.
  11. 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
				

REFERENSI

Untuk informasi lebih lanjut tentang menggunakan ADO.NET, DataSet benda, dan SQL, lihat Website Microsoft berikut:
http://msdn2.Microsoft.com/en-us/library/ms810293.aspx

ADO.NET untuk ADO Programmer
http://msdn2.Microsoft.com/en-us/library/ms973217.aspx

MSDN Online.Pusat Pengembang NET
http://MSDN.Microsoft.com/net
Untuk lebih banyak informasi umum tentang Visual Basic.NET dan ADO.NET, Lihat newsgroup MSDN berikut:
Microsoft.Public.DotNet.Languages.VB
Microsoft.Public.DotNet.Framework.adonet

Properti

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
Kata kunci: 
kbhowtomaster kbmt KB301248 KbMtid
Penerjemahan Mesin
PENTING: 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

Berikan Masukan