DataAdapter.Update(DataSet) Yöntem

Tanım

Belirtilen DataSet "Tablo" adlı bir satırdan DataTable eklenen, güncelleştirilen veya silinen her satır için ilgili INSERT, UPDATE veya DELETE deyimlerini çağırır.

public:
 virtual int Update(System::Data::DataSet ^ dataSet);
public:
 abstract int Update(System::Data::DataSet ^ dataSet);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
public virtual int Update(System.Data.DataSet dataSet);
public virtual int Update(System.Data.DataSet dataSet);
public abstract int Update(System.Data.DataSet dataSet);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
abstract member Update : System.Data.DataSet -> int
override this.Update : System.Data.DataSet -> int
abstract member Update : System.Data.DataSet -> int
override this.Update : System.Data.DataSet -> int
abstract member Update : System.Data.DataSet -> int
Public Overridable Function Update (dataSet As DataSet) As Integer
Public MustOverride Function Update (dataSet As DataSet) As Integer

Parametreler

dataSet
DataSet

Veri kaynağını güncelleştirmek için kullanılan DataSet.

Döndürülenler

DataSetbaşarıyla güncelleştirilen satır sayısı.

Uygulamalar

Öznitelikler

Özel durumlar

Kaynak tablo geçersiz.

INSERT, UPDATE veya DELETE deyimi yürütme girişimi, etkilenen sıfır kayıtla sonuçlandı.

Örnekler

Aşağıdaki örnek, OleDbDataAdapterveri kaynağı için türetilmiş sınıfını Update kullanır.

static private DataSet CreateCommandAndUpdate(
    string connectionString,
    string queryString)
{
    DataSet dataSet = new DataSet();

    using (OleDbConnection connection =
               new OleDbConnection(connectionString))
    {
        connection.Open();
        OleDbDataAdapter adapter =
            new OleDbDataAdapter();
        adapter.SelectCommand =
            new OleDbCommand(queryString, connection);
        OleDbCommandBuilder builder =
            new OleDbCommandBuilder(adapter);

        adapter.Fill(dataSet);

        // Code to modify data in the DataSet here.

        // Without the OleDbCommandBuilder, this line would fail.
        adapter.UpdateCommand = builder.GetUpdateCommand();
        adapter.Update(dataSet);
    }
    return dataSet;
}
Public Function CreateCommandAndUpdate( _
    ByVal connectionString As String, _
    ByVal queryString As String) As DataSet

    Dim dataSet As New DataSet()

    Using connection As New OleDbConnection(connectionString)
        connection.Open()
        Dim adapter As New OleDbDataAdapter()

        adapter.SelectCommand = New OleDbCommand( _
            queryString, connection)

        Dim builder As OleDbCommandBuilder = _
            New OleDbCommandBuilder(adapter)

        adapter.Fill(dataSet)

        ' Code to modify the data in the DataSet here. 

        ' Without the OleDbCommandBuilder this line would fail.
        builder.GetUpdateCommand()
        adapter.Update(dataSet)
    End Using
    Return dataSet
End Function

Açıklamalar

Güncelleştirme, satır temelinde gerçekleştirilir. Eklenen, değiştirilen ve silinen her satır için yöntemi, Update üzerinde gerçekleştirilen değişikliğin türünü belirler (Ekle, Güncelleştir veya Sil). Değişikliğin türüne bağlı olarak, Insertdeğiştirilen satırı veri kaynağına yaymak için , Update, veya Delete komut şablonu yürütülür. Uygulama Update yöntemini çağırdığında, DataAdapterRowState özelliğini inceler ve DataSetyapılandırılan dizinlerin sırasına göre her satır için gerekli INSERT, UPDATE veya DELETE deyimlerini yinelemeli olarak yürütür. Örneğin, UpdateDataTableiçindeki satırların sıralanması nedeniyle bir DELETE deyimi, ardından bir INSERT deyimi ve sonra başka bir DELETE deyimi yürütebilir.

Bu deyimlerin toplu işlem olarak gerçekleştirilmediği belirtilmelidir; her satır tek tek güncelleştirilir. Bir uygulama, deyim türlerinin sırasını denetlemeniz gereken durumlarda (örneğin, UPDATE'den önce INSERT) GetChanges yöntemini çağırabilir. Daha fazla bilgi için bkz . DataAdapters ile Veri Kaynaklarını Güncelleştirme.

INSERT, UPDATE veya DELETE deyimleri belirtilmemişse, Update yöntemi bir özel durum oluşturur. Ancak, bir .NET Framework veri sağlayıcısının özelliğini ayarlarsanızSqlCommandBuilder, tek tablolu güncelleştirmeler için otomatik olarak SQL deyimleri oluşturmak üzere bir OleDbCommandBuilder veya SelectCommand nesnesi oluşturabilirsiniz. Ardından, ayarlamadığınız tüm ek SQL deyimleri CommandBuildertarafından oluşturulur. Bu oluşturma mantığı, anahtar sütun bilgilerinin DataSetiçinde mevcut olmasını gerektirir. Daha fazla bilgi için bkz. CommandBuilders ile Komut Oluşturma.

Update yöntemi, güncelleştirme gerçekleştirmeden önce ilk eşlemede listelenen tablodan satırları alır. Update daha sonra UpdatedRowSource özelliğinin değerini kullanarak satırı yeniler. Döndürülen tüm ek satırlar yoksayılır.

herhangi bir veri DataSetiçine geri yüklendikten sonra OnRowUpdated olayı oluşturulur ve kullanıcının uzlaştırılan DataSet satırını ve komutu tarafından döndürülen tüm çıkış parametrelerini incelemesine olanak tanır. Bir satır başarıyla güncelleştirildikten sonra, bu satırdaki değişiklikler kabul edilir.

Updatekullanırken yürütme sırası aşağıdaki gibidir:

  1. DataRow değerleri parametre değerlerine taşınır.

  2. OnRowUpdating olayı tetiklenir.

  3. Komut yürütülür.

  4. Komut FirstReturnedRecordolarak ayarlanırsa, döndürülen ilk sonuç DataRowyerleştirilir.

  5. Çıkış parametreleri varsa, DataRowyerleştirilir.

  6. OnRowUpdated olayı tetiklenir.

  7. DataRow.AcceptChanges adlandırılır. Bu, güncelleştirilmiş DataTable.RowChangingiçin hem hem de DataTable.RowChangedDataRow olaylarını tetikler.

DataAdapter ile ilişkilendirilmiş her komutun genellikle kendisiyle ilişkilendirilmiş bir parametre koleksiyonu vardır. Parametreler, bir .NET veri sağlayıcısı SourceColumn sınıfının SourceVersion ve Parameter özellikleri aracılığıyla geçerli satıra eşlenir. SourceColumn, DataTable geçerli satır için parametre değerlerini almak için başvurduğu bir DataAdapter sütununa başvurur.

SourceColumn, herhangi bir tablo eşlemesi uygulanmadan önce eşlenmemiş sütun adına başvurur. SourceColumn var olmayan bir sütuna başvuruyorsa, gerçekleştirilen eylem aşağıdaki MissingMappingAction değerlerinden birine bağlıdır.

Numaralandırma değeri Eylem gerçekleştirilen
MissingMappingAction.Passthrough Eşleme yoksa DataSet kaynak sütun adlarını ve tablo adlarını kullanın.
MissingMappingAction.Ignore Bir SystemException oluşturulur. Eşlemeler açıkça ayarlandığında, bir giriş parametresi için eksik eşleme genellikle bir hatanın sonucudur.
MissingMappingAction.Error Bir SystemException oluşturulur.

SourceColumn özelliği, çıkış veya giriş/çıkış parametrelerinin değerini DataSetile eşlemek için de kullanılır. Var olmayan bir sütuna başvuruyorsa bir özel durum oluşturulur.

SourceVersion Bir .NET veri sağlayıcısının Parameter sınıfının özelliği, sütun değerinin Özgün, Geçerli veya Önerilen sürümünün kullanılıp kullanılmayacağını belirler. Bu özellik genellikle iyimser eşzamanlılık ihlallerini denetlemek için UPDATE deyiminin WHERE yan tümcesine özgün değerleri eklemek için kullanılır.

yönteminin veya yönteminin AcceptChanges çağrılması, AcceptChanges veya DataSetiçindeki DataTable tüm değişiklikleri işler. Yöntem çağrılmadan önce Update bu yöntemlerden biri çağrılırsa, yöntem çağrıldığında Update hiçbir değişiklik işlenmez, bundan sonra AcceptChanges başka değişiklikler yapılmadığı veya AcceptChanges çağrılmadığı sürece.

Note

Bir satır güncelleştirilirken bir hata oluşursa, bir özel durum oluşturulur ve güncelleştirmenin yürütülmesi sonlandırılır. Bir hatayla karşılaşıldığında özel durumlar oluşturmadan güncelleştirme işlemine devam etmek için, ContinueUpdateOnErrorçağırmadan önce true özelliğini Update olarak ayarlayın. DataAdapter'ın RowUpdated olayı içinde de hatalara satır başına yanıt vekleyebilirsiniz. RowUpdated olayı içinde özel durum oluşturmadan güncelleştirme işlemine devam etmek için StatusRowUpdatedEventArgs özelliğini Continueolarak ayarlayın.

üzerindeki Updateveri kaynağına yaydığınız her sütun için , InsertCommandveya UpdateCommandöğesine bir parametre eklenmelidirDeleteCommand. SourceColumn parametresinin özelliği sütunun adına ayarlanmalıdır. Bu ayar, parametrenin değerinin el ile ayarlanmadığını, ancak o anda işlenen satırdaki belirli bir sütundan alındığını gösterir.

Şunlara uygulanır

Ayrıca bkz.