Visual C# 2005 veya Visual C# .NET kullanarak bir DataSet nesnesinden bir veritabanını güncelleştirme

Makale çevirileri Makale çevirileri
Makale numarası: 307587 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu adım adım makalede, (bir veritabanından yüklenir) verilerini içeren bir DataSet nasıl gösterir, bu verileri değiştirme ve sonra özgün kaynak güncelleştirmek için veritabanına göndermek nasıl.

DataSet nesnelerini, veri erişimi Microsoft .NET Framework, önemli bir parçası, tablolar, görünümler ve ilişkileri tutabilir bellek içi nesneleridir.

Gereksinimler

Aşağıdaki listede önerilen donanım, yazılım, ağ altyapısı ve gereken hizmet paketleri yer almaktadır:
  • Microsoft Windows Server 2003, Microsoft Windows 2000Professional, Microsoft Windows 2000 Server, Microsoft Windows 2000 AdvancedServer veya Microsoft Windows NT 4.0 Server
  • Microsoft SQL Server sürüm 7.0, Microsoft SQL Server2000 veya Microsoft Data Engine (MSDE) PUBS örnek databaseinstalled
  • Microsoft Visual Studio 2005 veya Microsoft Visual Studio.NET
Bu makalede şu konularda bilgi sahibi olduğunuz varsayılmaktadır:
  • Veritabanı terimleri
  • Yapılandırılmış sorgu dili (SQL)

Nasıl bir DataSet nesnesinden bir veritaban?n? güncelle?tirmek

Bu bölümde, DataSet nesnesinin bir veritabanındaki verileri güncelleştirmek için nasıl kullanılacağını gösterir. Aynı zamanda bir SqlCommand nesnesi eklemek, güncelleştirmek ve doğrudan bir veritabanında bulunan verileri silme için kullanabileceğiniz hatırlamak önemlidir.

Bu makalede anlamanıza yardımcı olmak için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
314145 Visual C# .NET kullanarak bir veritabanından bir DataSet nesnesini doldurmak nasıl
Bazı içinde kapsanan konular 314145 bir veritabanından ve DataSetnesnesine veri almak nasıl ve nasıl ayrı ve farklı veritabanından veri kümesi içerir.

DataSet yüklendikten sonra verileri değiştirebilirsiniz. DataSet bu değişiklikleri izler. DataSet nesnesinin bir önbellek bir veritabanından alınan verileri kabul edilebilir. DataSet nesnesi, tabloları, ilişkileri ve kısıtlamalar topluluğu içerir.

Bir DataSet güncelleştirmek ve bu güncelleştirmeleri veritabanına göndermek için şu adımları izleyin:
  1. Visual Studio 2005 veya Visual Studio .NET başlatın.
  2. Visual C# içinde yeni bir konsol uygulaması oluşturun. Visual Studio varsayılan ve boş bir Main() yordamı tarafından statik bir sınıf oluşturur.
  3. Proje sistemi ve System.Data ad başvuru içerdiğinden emin olun. Bu ad daha sonra kodunuzda declarationsfrom nitelemek gerekmez böylece Sistem, System.Datave System.Data.SqlClient ad boşluklarına kullanarak deyimini kullanın. Bu ifadeler priorto tüm diğer bildirimlerden kullanmanız gerekir.
    using System;
    using System.Data;
    using System.Data.SqlClient;
    					
  4. Verileri değiştirmek ve veritabanı değişikliklerini backto gönderme önce DataSetnesnesine bilgi yüklemeniz gerekir. İlgili ayrıntılı yordamlar için bkz.314145. Çoğaltma, kod içinde ayrıntılı olarak sunulmayan bu stepis önlemek için.

    Followingcode noktaları için yerel bilgisayar (veya kod çalıştığı thecomputer) bulunan bir SQL Server için bağlantı dizesinde özetlemek, bağlantı oluşturulduğunda, ve veri bağdaştırıcısı oluşturulur, DataSet verilerle doldurmak için kullanılır.
    Not Bu kodu çalıştırmadan önce <username>kullanıcı kimliği ve parola<strongpassword> doğru değerlere değiştirmeniz gerekir. ThatUser kimliği veritabanı üzerinde bu işlemi gerçekleştirmek için uygun izinlere sahip olduğundan emin olun.</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. Verileri yüklendiğinde, onu değiştirebilirsiniz. Orada bir satır (kayıt) eklemeye aremany yolu. Bu kod örneği, üç stepprocedure kullanır:
    • Yeni bir DataRow nesnesinin DataTablenesnesinden elde edilir.
    • DataRow alan değerleri gerektiği şekilde ayarlayın.
    • Yeni bir nesne DataTable.Rows topluluğunun Add yöntemini geçirin.
    4. Adımda kodundan sonra aşağıdaki kodu yapıştırın:
    //****************
    // 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. Var olan satırları düzenlemek için uygun DataRow nesnesini alın ve sonra bir veya daha fazla sütun için yeni değerleri sağlar. Makinenin ilk veri (çağrı FillSchema 4. adımda) yanı sıra, tablo dönüştüren yüklü olduğundan çok daha kolay doğru satır bulun. Bir yerde şemasıyla tablo whichcolumn birincil anahtarı ve Rows topluluğunun bulma yöntemi kullanılabilir bilir.

    Find yöntemi (Bu durumda, au_Id) birincil anahtarı DataRow nesnesinin belirli bir değerle döner. DataRow, aldıktan sonra sütunları değiştirebilirsiniz. BeginEdit ve EndEditthemodifications kaydırmak zorunda değilsiniz, ancak bu DataSet yapmak zorunda değildir ve DataSetEndEdit çağrıldığında, doğrulama denetimleri aynı anda gerçekleştirmek verir iş kolaylaştırır. Ekle koddan sonra aşağıdaki kodu yapıştırın:
    //*****************
    // 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. Tüm bu değişiklikleri özgün veritabanını güncelleştirmek için DataSet'iDataAdapter nesnesinin Update yöntemi geçirin.

    Ancak, güncelleştirmearamadan önce DataAdapter nesnesinin InsertCommand, UpdateCommandve DeleteCommand özelliklerini ayarlamanız gerekir. El ile SQL yazmak ve bu threeproperties karşılık gelen bir SqlCommand nesnesi ile doldurmak, ancak de Visual Studio .NET generatethese üç komutu için otomatik olarak kullanabilirsiniz.

    Gerekli olan gerekli commandswhen üretmek için SqlCommandBuilder nesnesinin bir örneğini oluşturmak ve DataAdapter Oluşturucu kullanın. Hangi isillustrated izlemek için örnek kod, bu yöntemi kullanmak isterseniz, tablo için birincil anahtar informationavailable olması gerekir. Birincil anahtar bilgileri erişmek için FillSchema, çağrı ve sonra AddWithKeyiçin DataAdapter nesnesinin MissingSchemaAction özelliğini ayarlayın veya birincil anahtar kodunuzu el ile ayarlayın. Düzen koddan sonra aşağıdaki kodu yapıştırın:
    //*****************
    // 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. Satır tamamen silmek için DataRow nesnesinin Delete yöntemini kullanın. Rows topluluğuna kaldırmak ve RemoveAtsatırı silmek, ancak bunun yerine yalnızca koleksiyon rowfrom kaldırmak gibi görünüyor iki yöntem içerdiğini unutmayın. Delete yöntemi yalnızca sizin silme kaynak veritabanına gönderir. Aşağıdaki kod, sonra değişiklikleri SQL SERVER Gönder kodu yapıştırın:
    //*****************
    //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. Değişiklikleri önceden eklediğiniz kayıt kutusu kaldırmak için SQL sunucusuna gönderir. DELETE koddan sonra aşağıdaki kodu yapıştırın:
    //*****************
    // CLEAN UP SQL SERVER
    daAuthors.Update(dsPubs, "Authors");
    Console.WriteLine("SQL Server updated successfully, Check Server explorer to see changes");
    Console.ReadLine();
    					
  10. Projenizi kaydedin.
  11. Hata ayıklama menüsünde, proje çalıştırmak için Başlat ' ı tıklatın. Hangi kod ilerlemesini belirtmek ve verilerin kodunu ilerledikçe GeçerliDurum gözden geçirmek izin birkaç ileti kutusunda görüntülenen dikkat.

Tam kod listesi

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();         	
			
        }
    }
}
				

Referanslar

ADO.NET kullanma hakkında daha fazla bilgi için DataSet nesnelerini ve SQL, aşağıdaki Microsoft Web sitelerini ziyaret edin:
Veri erişimi ( MSDN Sesler sütun) Dalma
http://msdn2.microsoft.com/en-us/library/ms810288.aspx
ADO programcısı için ADO.NET
http://msdn.microsoft.com/en-us/library/ms973217.aspx
MSDN Online .NET Geliştirici Merkezi
http://msdn2.microsoft.com/en-us/netframework/default.aspx

Özellikler

Makale numarası: 307587 - Last Review: 29 Ekim 2013 Salı - Gözden geçirme: 7.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Anahtar Kelimeler: 
kbhowtomaster kbsqlclient kbsystemdata kbmt KB307587 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, Microsoft Makine Çevirisi Düzenleme yazılımı tarafından tercüme edilmiş olup, yüksek olasılıkla profesyonel bir çevirmen yerine CTF teknolojisi kullanılarak, Microsoft Topluluğu tarafından düzenlenmiştir. Microsoft, Bilgi Bankamız içindeki tüm makaleleri kendi dilinizde okuyabilmeniz için size hem profesyonel çevirmenler tarafından tercüme edilen hem de makine tarafından tercüme edildikten sonra Topluluk tarafından kontrol edilen makaleler sunar. Bununla birlikte, makine tarafından tercüme edilen, hatta Topluluk tarafından kontrol edilen bir makale bile her zaman mükemmel dil kalitesinde olmayabilir. Makalede dilinizi konuşan yabancı birisinin yapabileceği türden sözcük, söz dizimi veya dilbilgisi hataları bulunabilir. Microsoft, içeriğin hatalı tercümesinin veya müşterilerimiz tarafından kullanımının doğurabileceği olası yanlış anlamalar, hatalar veya zararlardan sorumlu değildir. Öte yandan Microsoft, Makine Çevirisi Düzenleme işlemini geliştirmek amacıyla Makine Çevirisi Düzenleme yazılımını ve araçlarını sık sık güncelleştirmektedir.
Makalenin İngilizcesi aşağıdaki gibidir: 307587

Geri Bildirim Ver

 

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