Cara update database dari sebuah objek DataSet dengan menggunakan Visual C# 2005 atau Visual C# net

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

Pada Halaman ini

Ringkasan

Artikel langkah-langkah ini menunjukkan Anda bagaimana untuk mengambil DataSet yang berisi data (yang diambil dari database), bagaimana memodifikasi data itu, dan kemudian bagaimana untuk mengirim kembali ke database untuk memperbarui sumber asli.

DataSet objek, bagian penting dari akses data di Microsoft .NET Framework, adalah objek di kehabisan memori yang dapat menyimpan Daftar Tabel, pemandangan, dan hubungan.

Persyaratan

Daftar berikut menguraikan fitur peranti penangkap keras, peranti penangkap lunak, infrastruktur jaringan, dan Service Pack yang Anda butuhkan:
  • Microsoft Windows Server 2003, 2000Professional Microsoft Windows, Microsoft Windows 2000 Server, Microsoft Windows 2000 AdvancedServer, atau Microsoft Windows NT 4.0 Server
  • Microsoft SQL Server versi 7.0, Microsoft SQL Server2000, atau Microsoft Data mesin (MSDE) dengan pub sampel databaseinstalled
  • Microsoft Visual Studio 2005 atau Microsoft Visual Studio.NET
Artikel ini mengasumsikan bahwa Anda sudah familiar dengan berikut topik:
  • Database terminologi
  • Bahasa Permintaan Terstruktur (SQL)

Cara update database dari sebuah objek DataSet

Bagian ini menunjukkan bagaimana untuk menggunakan DataSet objek untuk memperbarui data dalam database. Hal ini penting untuk diingat bahwa Anda juga dapat menggunakan sebuah objek SqlCommand untuk memasukkan, update, dan menghapus data dalam database secara langsung.

Untuk membantu Anda memahami artikel ini, klik nomor artikel di bawah ini untuk melihat artikel di dalam Pangkalan Pengetahuan Microsoft:
314145 Cara mengisi DataSet objek dari Database dengan menggunakan Visual C# net
Beberapa topik yang dibahas di 314145 termasuk cara untuk mengambil data dari database dan ke DataSet, dan bagaimana DataSet terpisah dan berbeda dari database.

Setelah DataSet dimuat, Anda dapat memodifikasi data. DataSet akan melacak perubahan ini. Objek DataSet dapat dianggap cache di kehabisan memori data yang Diperoleh dari database. Objek DataSet yang terdiri dari kumpulan Daftar Tabel, hubungan dan kendala.

Untuk memperbarui DataSet dan mengirim orang-orang pembaruan ke database, ikuti langkah berikut:
  1. Mulai Visual Studio 2005 atau Visual Studio .NET.
  2. Membuat aplikasi konsol baru di Visual C#. VisualStudio menciptakan kelas statis secara asali dan prosedur Main() yang kosong.
  3. Pastikan bahwa proyek berisi referensi ke sistem dan System.Data namespaces. Menggunakan menggunakan pernyataan pada sistem, System.Datadan System.Data.SqlClient namespaces sehingga Anda tidak diharuskan untuk memenuhi syarat declarationsfrom namespaces ini kemudian dalam kode Anda. Anda harus menggunakan priorto pernyataan ini Deklarasi-Deklarasi lain.
    using System;
    using System.Data;
    using System.Data.SqlClient;
    					
  4. Sebelum Anda dapat memodifikasi data dan menyerahkan perubahan backto database, Anda harus memuat informasi ke DataSet. Untuk prosedur rinci, lihat314145. Untuk menghindari duplikasi kode dalam stepis ini tidak disajikan secara rinci.

    Koneksi string dalam poin followingcode ke SQL Server yang berada pada komputer lokal (atau thecomputer mana kode berjalan) untuk meringkas, sambungan dibuat, andthen sebuah adaptor data dibuat, yang digunakan untuk mengisi DataSet dengan data.
    Catatan Anda harus mengubah User ID <username>dan password<strongpassword> ke nilai yang benar sebelum Anda menjalankan kode ini. Pastikan thatUser ID memiliki izin yang tepat untuk melakukan operasi ini pada thedatabase.</strongpassword> </username>
    string sConnectionString;
    
    // Modify the following string to correctly connect to your SQL Server.
    sConnectionString = "Password=<strong password>;User ID=<username>;"
    	+ "Initial Catalog=pubs;"
    	+ "Data Source=(local)";
    
    SqlConnection objConn
    	= new SqlConnection(sConnectionString);
    objConn.Open();
    
    // Create an instance of a DataAdapter.
    SqlDataAdapter daAuthors 
    	= new SqlDataAdapter("Select * From Authors", objConn);
    
    // Create an instance of a DataSet, and retrieve data from the Authors table.
    DataSet dsPubs = new DataSet("Pubs");
    daAuthors.FillSchema(dsPubs,SchemaType.Source, "Authors");
    daAuthors.Fill(dsPubs,"Authors");
    					
  5. Sekarang bahwa data diambil, Anda dapat mengubahnya. Ada cara aremany untuk menambahkan baris (atau catatan). Sampel kode ini menggunakan tiga stepprocedure:
    • Memperoleh objek DataRow baru dari DataTable.
    • Menetapkan nilai-nilai bidang DataRow sebagai diperlukan.
    • Lulus objek baru ke metode Tambah kumpulan DataTable.Rows .
    Paste kode berikut setelah kode dalam langkah 4:
    //****************
    // BEGIN ADD CODE 
    // Create a new instance of a DataTable.
    DataTable tblAuthors;
    tblAuthors = dsPubs.Tables["Authors"];
    
    DataRow drCurrent;
    // 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.
    tblAuthors.Rows.Add(drCurrent);
    Console.WriteLine("Add was successful, Click any key to continue!!");
    Console.ReadLine();
    
    // END ADD CODE  
    					
  6. Untuk mengedit yang sudah ada baris, mendapatkan objek DataRow yang sesuai, dan kemudian memberikan nilai baru untuk satu atau lebih kolom. Youmust pertama menemukan baris yang benar, yang jauh lebih mudah karena Anda dimuat theschema Daftar Tabel serta data (panggilan untuk FillSchema di langkah 4). Dengan skema di tempat, Daftar Tabel tahu whichcolumn bukti kunci primer, dan menemukan metode pengumpulan baris tersedia.

    Menemukan metode gulung balik objek DataRow dengan nilai tertentu di bukti kunci primer (dalam kasus ini, au_id). Setelah Anda memiliki yang DataRow, Anda dapat mengubah kolom. Anda tidak memiliki untuk membungkus themodifications di BeginEdit dan EndEdit, tapi ini menyederhanakan kerja bahwa DataSet hubungannya dan memungkinkan DataSet untuk melakukan cek validasi yang secara bersamaan ketika EndEdit disebut. Paste kode berikut setelah Menambahkan kode:
    //*****************
    // BEGIN EDIT CODE 
    
    drCurrent = tblAuthors.Rows.Find("213-46-8915");
    drCurrent.BeginEdit();
    drCurrent["phone"] = "342" + drCurrent["phone"].ToString().Substring(3);
    drCurrent.EndEdit();
    Console.WriteLine("Record edited successfully, Click any key to continue!!");
    Console.ReadLine();
    
    // END EDIT CODE  
    					
  7. Untuk memperbarui database asli dengan semua perubahan, lulus DataSet ke metode UpdateDataAdapter objek.

    Namun, sebelum Anda dapat menyebut Update, Anda harus mengatur properti InsertCommand, UpdateCommanddan DeleteCommand objek DataAdapter . Anda dapat secara manual menulis SQL dan mengisi ini threeproperties dengan benda-benda SqlCommand yang sesuai, tetapi Anda juga dapat menggunakan Visual Studio .NET generatethese tiga perintah secara otomatis.

    Untuk menghasilkan commandswhen diperlukan yang mereka dibutuhkan, Anda harus membuat sebuah instance objek SqlCommandBuilder dan menggunakan DataAdapter dalam konstruktor. Jika Anda ingin menggunakan metode ini, yang isillustrated dalam contoh kode untuk mengikuti, Anda harus memiliki informationavailable bukti kunci utama untuk tabel atak Anda. Untuk mengakses informasi bukti kunci utama, panggilan FillSchema, dan kemudian mengatur properti MissingSchemaAction Anda DataAdapter untuk AddWithKey, atau ditetapkan secara manual bukti kunci primer dalam kode Anda. Paste kode thefollowing setelah MENGEDIT kode:
    //*****************
    // BEGIN SEND CHANGES TO SQL SERVER 
    
    SqlCommandBuilder objCommandBuilder = new SqlCommandBuilder(daAuthors);
    daAuthors.Update(dsPubs, "Authors");
    Console.WriteLine("SQL Server updated successfully, Check Server explorer to see changes");
    Console.ReadLine();
    
    // END SEND CHANGES TO SQL SERVER
    					
  8. Untuk menghapus baris sepenuhnya, menggunakan metode menghapus objek DataRow . Dicatat bahwa koleksi baris berisi dua metode, menghapus dan RemoveAt, yang tampaknya untuk menghapus baris, tetapi sebaliknya hanya menghapus rowfrom koleksi. Hanya menghapus metode mengirimkan penghapusan Anda kembali ke database sumber. Paste kode thefollowing setelah kode mengirim perubahan ke SQL SERVER:
    //*****************
    //BEGIN DELETE CODE 
    
    drCurrent = tblAuthors.Rows.Find("993-21-3427");
    drCurrent.Delete();
    Console.WriteLine("Record deleted successfully, Click any key to continue!!"); 
    Console.ReadLine();
    
    //END DELETE CODE 
    					
  9. Kirim perubahan ke SQL Server untuk menghapus bahwa kau rekor yang ditambahkan sebelumnya. Paste kode berikut setelah menghapus kode:
    //*****************
    // CLEAN UP SQL SERVER
    daAuthors.Update(dsPubs, "Authors");
    Console.WriteLine("SQL Server updated successfully, Check Server explorer to see changes");
    Console.ReadLine();
    					
  10. Menyimpan proyek Anda.
  11. Pada Debug menu, klik mulai untuk menjalankan proyek. Pemberitahuan yang muncul beberapa kotak pesan, yang menunjukkan kemajuan kode dan memungkinkan Anda untuk meninjau currentstate data sebagai kode berlangsung.

Daftar kode lengkap

using System;
using System.Data;
using System.Data.SqlClient;

namespace PopulateDataSet
{

    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    class Class1
    {
        static void Main(string[] args)
        {
            string sConnectionString;

            // Modify the following string to correctly connect to your SQL Server.
            sConnectionString = "Password=;User ID=sa;"
                + "Initial Catalog=pubs;"
                + "Data Source=(local)";

            SqlConnection objConn
                = new SqlConnection(sConnectionString);
            objConn.Open();

            // Create an instance of a DataAdapter.
            SqlDataAdapter daAuthors 
                = new SqlDataAdapter("Select * From Authors", objConn);

            // Create an instance of a DataSet, and retrieve 
            // data from the Authors table.
            DataSet dsPubs = new DataSet("Pubs");
            daAuthors.FillSchema(dsPubs,SchemaType.Source, "Authors");
            daAuthors.Fill(dsPubs,"Authors"); 
            //****************
            // BEGIN ADD CODE 
            // Create a new instance of a DataTable.
            DataTable tblAuthors;
            tblAuthors = dsPubs.Tables["Authors"];

            DataRow drCurrent;
            // 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.
            tblAuthors.Rows.Add(drCurrent);
            Console.WriteLine("Add was successful, Click any key to continue!!");
            Console.ReadLine();

            // 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();
            Console.WriteLine("Record edited successfully, Click any key to continue!!");
            Console.ReadLine();
			
            // END EDIT CODE   
            //*****************
            // BEGIN SEND CHANGES TO SQL SERVER 

            SqlCommandBuilder objCommandBuilder = new SqlCommandBuilder(daAuthors);
            daAuthors.Update(dsPubs, "Authors");
            Console.WriteLine("SQL Server updated successfully, Check Server explorer to see changes");
            Console.ReadLine();
			
            // END SEND CHANGES TO SQL SERVER 
            //*****************
            //BEGIN DELETE CODE 

            drCurrent = tblAuthors.Rows.Find("993-21-3427");
            drCurrent.Delete();
            Console.WriteLine("SRecord deleted successfully, Click any key to continue!!"); 
            Console.ReadLine();
       
            //END DELETE CODE  
            //*****************
            // CLEAN UP SQL SERVER
            daAuthors.Update(dsPubs, "Authors");
            Console.WriteLine("SQL Server updated successfully, Check Server explorer to see changes");
            Console.ReadLine();         	
			
        }
    }
}
				

Referensi

Untuk informasi lebih lanjut tentang menggunakan ADO.NET DataSet benda, dan SQL, kunjungi situs web Microsoft berikut:
Menyelam ke dalam akses Data ( MSDN suara kolom)
http://msdn2.Microsoft.com/en-US/Library/ms810288.aspx
ADO.NET untuk ADO Programmer
http://msdn.Microsoft.com/en-US/Library/ms973217.aspx
Pusat Pengembang .NET Online MSDN
http://msdn2.Microsoft.com/en-US/netframework/default.aspx

Properti

ID Artikel: 307587 - Kajian Terakhir: 29 Oktober 2013 - Revisi: 3.0
Berlaku bagi:
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Kata kunci: 
kbhowtomaster kbsqlclient kbsystemdata kbmt KB307587 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan oleh perangkat lunak penerjemahan mesin Microsoft, dan mungkin telah diedit oleh Masyarakat Microsoft melalui teknologi CTF dan bukan oleh seorang penerjemah profesional. Microsoft menawarkan baik artikel yang diterjemahkan oleh manusia maupun artikel hasil editan terjemahan oleh mesin/komunitas, sehingga Anda dapat mengakses semua artikel di Sentra Pengetahuan yang kami miliki dalam berbagai bahasa. Namun artikel hasil editan mesin atau bahkan komunitas tidak selalu sempurna. Artikel ini dapat mengandung kesalahan dalam hal kosa kata, sintaksis atau tatabahasa, sangat mirip dengan penutur asing yang membuat kekeliruan ketika berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab atas ketidakakuratan, kesalahan atau kerugian apa pun akibat dari kekeliruan dalam penerjemahan isi atau penggunaannya oleh pelanggan kami. Microsoft juga akan senantiasa memperbarui perangkat lunak penerjemahan mesin dan alat untuk menyempurnakan Editan Hasil Penerjemahan Mesin.
Klik disini untuk melihat versi Inggris dari artikel ini: 307587

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com