Visual Basic. NET'te SqlDataAdapter nesnesini'ı kullanarak bir SQL Server veritabanını güncelleştirme nasıl yüklenir

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

Bu Sayfada

Özet

Bu makalede, SqlDataAdapter nesnesi veritabanındaki bir tablodan verilerle doldurulan bir DataSet nesnesi üzerinde çalışan ve veri değişiklikleri ile SQL Server veritabanını güncelleştirmek için nasıl kullanılacağını gösteren bir Microsoft Visual Basic .NET kod örnekleri içerir.

Gereksinimler

Aşağıdaki listede önerilen donanım, yazılım, ağ altyapısı, beceriler ve bilgi ve gereken hizmet paketleri önerilmektedir:
  • Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Server veya Windows NT 4.0 Server Gelişmiş...
  • Microsoft Visual Studio. NET'i
  • Microsoft SQL Server sürüm 7.0 veya sonrası
Bu makalede, aşağıdaki konularda bilgi sahibi olduğunuz varsayılmaktadır:
  • Visual Basic .NET
  • ADO.NET temelleri ve sözdizimi

Tekniğin Açıklaması

SqlDataAdapter nesnesi, SQL Server veritabanına bir DataSet ADO.NET nesne arasında köprü görevi görür. SqlDataAdapter ADO.NET DataSet nesneyi verilerin, bir SQL Server veritabanından alınır ve daha sonra veritabanı (örneğin, ekler, güncelleştirmeleri ve silmeleri) DataSet nesnesini kullanarak verilerde yapılan değişiklikleri yansıtacak şekilde güncelleştirir dolduran ara bir nesnedir.

Insertcommand, UpdateCommandSqlDataAdapter nesnesinin DeleteCommand özelliklerini veritabanının bir DataSet nesnesi üzerinde çalıştırılan veri değişiklikleri ile güncelleştirin. Bu özellikler INSERT, GÜNCELLEŞTIRME ve hedef veritabanı için veri değişikliklerini deftere nakletmek için kullanılan bir Transact-SQL DELETE komutları SqlCommand nesneleridir. Bu özellikler için atanan SqlCommand nesnesi el ile kodda oluşturulan veya SqlCommandBuilder nesnesini kullanarak otomatik şekilde oluşturulan.

Bu makaledeki ilk kod örneğini SqlCommandBuilder nesneyi otomatik olarak SqlDataAdapter nesnesinin UpdateCommand özelliği oluşturmak için nasıl kullanılacağını gösterir. Ikinci örnek bir senaryo, otomatik bir komut oluşturma kullanamazsınız kullanır. Ikinci örnek, el ile oluşturmak ve bir SqlCommand nesnesi bir <a0>SqlDataAdapter</a0> nesnesinin UpdateCommand özelliği gösterilmiştir.

Örnek SQL Server tabloyu oluşturur

Bu makalede belgelenen kod örnekleri Visual Basic .NET kullanabileceğiniz örnek bir SQL Server tablo oluşturmak için aşağıdaki adımları izleyin:
  1. SQL Query Analyzer'ı açın ve sonra örnek tabloyu oluşturmak istediğiniz veritabanına bağlanın. Bu makalede kullanılan Northwind veritabanını, SQL Server'ın içerdiği kod örnekleri.
  2. CustTest adlı örnek bir tablo oluşturmak için tabloya kayıt eklemek için aşağıdaki Transact-SQL deyimlerini çalıştırın:
    Create Table CustTest
    (
     CustID int primary key,
     CustName varchar(20)
    )
    
    Insert into CustTest values(1,'John')
    					

Kod örnek 1: Komutlar otomatik olarak oluşturuldu.

Bir DataSet dolduran veri almak için kullandığınız bir SELECT deyimi, bir tek bir veritabanı tablosuna dayalı olan, DeleteCommandınsertcommand ve DataAdapterUpdateCommand özelliklerini otomatik olarak oluşturulacak CommandBuilder nesnesini kullanabilirsiniz. Basitleştirir ve INSERT, DELETE ve UDPATE işlemleri gerçekleştirmek için gerekli olan kodu azaltır.

En düşük gereksinim olarak, komutları otomatik olarak oluşturmak için SelectCommand özelliği ayarlamanız gerekir. Tablo şema SelectCommand alır, INSERT ve GÜNCELLEŞTIRMEYI otomatik olarak oluşturulan DELETE deyimleri sözdizimi belirler.

SelectCommand en az bir birincil anahtar veya benzersiz bir sütun dönmeniz gerekir. Hiçbiri yoksa, InvalidOperation özel durum oluşturulur ve komutları değil oluşturulur.

SqlCommandBuilder nesneyi otomatik olarak DeleteCommand oluşturmak için nasıl kullanılacağını gösteren bir örnek Visual Basic .NET konsol uygulaması oluşturmak için <a0></a0>, söz konusu ınsertcommand ve UpdateCommand özelliklerini SqlCommand nesnesi SqlDataAdapter nesne için adımları izleyin:
  1. Yeni bir Visual Basic .NET konsol uygulaması oluşturmak için aşağıdaki adımları izleyin:
    1. Microsoft Visual Studio .NET'i başlatın.
    2. Dosya menüsünde Yeni ' nin üzerine gelin ve sonra Project ' i tıklatın.
    3. Project Types altında Visual Basic Projects ' ı tıklatın ve şablonları altında Console Application ' ı tıklatın.
  2. Module1 varsayılan içeriğini aşağıdaki kodla değiştirin:
    Imports System.Data.SqlClient
    Imports Console = System.Console
    
    Module Module1
    
        Sub Main()
    
            Dim cn As New SqlConnection()
            Dim CustomersDataSet As New DataSet()
            Dim da As SqlDataAdapter
            Dim dr As DataRow
            Dim cmdBuilder As SqlCommandBuilder  
      
            'Set the connection string of the SqlConnection object to connect to the
            'SQL Server database in which you created the sample table.
    
            cn.ConnectionString = "Server=.;Database=northwind;UID=sa;PWD=;"
            cn.Open()      
    
            
            'Initialize the SqlDataAdapter object by specifying a Select command 
            'that retrieves data from the sample table.
    
            da = New SqlDataAdapter("select * from CustTest order by CustId", cn)
    
    
            'Initialize the SqlCommandBuilder object to automatically generate and initialize
            'the UpdateCommand, InsertCommand and DeleteCommand properties of the SqlDataAdapter.
    
            cmdBuilder = New SqlCommandBuilder(da)
    
            'Populate the dataset by running the Fill method of the SqlDataAdapter.
            da.Fill(CustomersDataSet, "Customers")
    
           
            'Display the Update, Insert and Delete commands that were automatically generated
            'by the SqlCommandBuilder object. 
    
            Console.WriteLine("Update command Generated by the Command Builder : ")
            Console.WriteLine("==================================================")
            Console.WriteLine(cmdBuilder.GetUpdateCommand.CommandText)
            Console.WriteLine("         ")
    
            Console.WriteLine("Insert command Generated by the Command Builder : ")
            Console.WriteLine("==================================================")
            Console.WriteLine(cmdBuilder.GetInsertCommand.CommandText)
            Console.WriteLine("         ")        
    
            Console.WriteLine("Delete command Generated by the Command Builder : ")
            Console.WriteLine("==================================================")
            Console.WriteLine(cmdBuilder.GetDeleteCommand.CommandText)
            Console.WriteLine("         ")
    
            'Write out the value in the CustName field before updating the data using the DataSet.
            Console.WriteLine("Customer Name before Update : " & CustomersDataSet.Tables("Customers").Rows(0)("CustName"))
    
            'Modify the value of the CustName field.
            CustomersDataSet.Tables("Customers").Rows(0)("CustName") = "Jack"
    
            'Post the data modification to the database.
            da.Update(CustomersDataSet, "Customers")        
    
            Console.WriteLine("Customer Name updated successfully")
    
            'Close the database connection.
            cn.Close()
    
            Console.ReadLine()
    
        End Sub
    
    End Module
  3. Kaydedin ve sonra da uygulamayı çalıştırın. Bir konsol penceresi açılır ve aşağıdaki çıktıyı görüntüler:
    Update command Generated by the Command Builder : 
    ==================================================
    UPDATE CustTest SET CustID = @p1 , CustName = @p2 WHERE ( CustID = @p3 AND CustName = @p4 )
             
    Insert command Generated by the Command Builder : 
    ==================================================
    INSERT INTO CustTest( CustID , CustName ) VALUES ( @p1 , @p2 )
             
    Delete command Generated by the Command Builder : 
    ==================================================
    DELETE FROM  CustTest WHERE ( CustID = @p1 AND CustName = @p2 )   
          
    Customer Name before Update : John
    Customer Name updated successfully
    						
  4. Konsol penceresini kapatmak ve uygulamayı durdurmak için herhangi bir tuşa basın.

Kod Örnek 2: El ile oluşturmak ve UpdateCommand özelliği'ni başlatma

Çıkış kodu örnek 1 oluşturduğu mantığı komutları için otomatik olarak GÜNCELLEŞTIR deyimleri oluşturmak için iyimser eşzamanlılık dayanır gösterir. Diğer bir deyişle, kayıtları düzenleme için kilitli değil ve kayıtları değiştirebilirsiniz, başka bir kullanıcı veya işlem zaman.

Bir kayıt SELECT deyimi döndürüldü, ancak önce GÜNCELLEŞTIRME deyimi verildikten sonra değişiklik nedeniyle, yalnızca, tüm özgün değerleri içeriyorsa, satır güncelleştirilmesi otomatik olarak oluşturulan bir UPDATE deyimi WHERE yan tümcesi içeriyor. Bu yeni veriler üzerine kaçınmaktır. Silinmiş veya DataSet içinde bulunan özgün değerler içeren bir satırı güncelleştirmek otomatik olarak oluşturulan bir UPDATE deyimi çalışırsa, komutu tüm kayıt ve özel olarak üretilmiş bir DBConcurrencyException etkilemez. Bu kod örneği 1 koduyla sınamak için <a0></a0>, kod içinde Visual Studio hata ayıklayıcısının çalıştırmak, DataSet doldurulmuş sonra ancak veritabanında güncelleştirilmeden önce kesme noktası ayarlamak ve SQL Query Analyzer ' tablosundaki bir satırı silin. Update çağrısında sonra özel durum atar.

UPDATE deyimi, özgün değerleri bağımsız olarak tamamlamak için isterseniz, açıkça UpdateCommand için DataAdapter ayarlayın. ve üzerinde otomatik bir komut oluşturma kullanır.

El ile oluşturmak ve SqlDataAdapter nesnesinin kodu örnek 1'de kullanılan UpdateCommand özelliği'ni başlatmak için şu adımları izleyin:
  1. Oluşturduğunuz Visual Basic .NET konsol uygulaması olarak, Sub Main Module1 varolan kodu yerine Code Sample 1: Automatically Generated Commands aşağıdaki kod bölümü:
    Dim cn As New SqlConnection()
    Dim CustomersDataSet As New DataSet()
    Dim da As SqlDataAdapter
    Dim dr As DataRow        
    Dim DAUpdateCmd As SqlCommand
    
    
    cn.ConnectionString = "Server=.;Database=northwind;UID=sa;PWD=;"
    cn.Open()
    
    da = New SqlDataAdapter("select * from CustTest order by CustId", cn)
    
    'Initialize the SqlCommand object that will be used as the DataAdapter's UpdateCommand.
    'Note that the WHERE clause uses only the CustId field to locate the record that is to be updated.
    
    DAUpdateCmd = New SqlCommand("Update CustTest set CustName = @pCustName where CustId = @pCustId", da.SelectCommand.Connection)
    
    
    'Create and append the parameters for the Update command.
    
    DAUpdateCmd.Parameters.Add(New SqlParameter("@pCustName", SqlDbType.VarChar))
    DAUpdateCmd.Parameters("@pCustName").SourceVersion = DataRowVersion.Current
    DAUpdateCmd.Parameters("@pCustName").SourceColumn = "CustName"
    
    DAUpdateCmd.Parameters.Add(New SqlParameter("@pCustId", SqlDbType.Int))
    DAUpdateCmd.Parameters("@pCustId").SourceVersion = DataRowVersion.Original
    DAUpdateCmd.Parameters("@pCustId").SourceColumn = "CustId"
    
    
    'Assign the SqlCommand to the UpdateCommand property of the SqlDataAdapter.
    da.UpdateCommand = DAUpdateCmd        
    
    da.Fill(CustomersDataSet, "Customers")        
    
    Console.WriteLine("Customer Name before Update : " & CustomersDataSet.Tables("Customers").Rows(0)("CustName"))
    
    CustomersDataSet.Tables("Customers").Rows(0)("CustName") = "Jack"
    da.Update(CustomersDataSet, "Customers")        
    
    Console.WriteLine("Customer Name updated successfully")
    
    cn.Close()
    Console.ReadLine()
    
    					
  2. 1 Ile 4'te yineleyin Code Sample 1: Automatically Generated Commands bölümü. Bir DBConcurrencyException özel artık oluşturulan unutmayın.

Özellikler

Makale numarası: 308055 - Last Review: 15 Temmuz 2004 Perşembe - Gözden geçirme: 2.3
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft ADO.NET (included with the .NET Framework)
  • Microsoft ADO.NET 1.1
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
Anahtar Kelimeler: 
kbmt kbhowtomaster kbsqlclient kbsystemdata KB308055 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:308055

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