Aracılığıyla paylaş


DataAdapter.Update(DataSet) Yöntem

Tanım

Adlandırılmış bir DataTable "Tablo" içinde belirtilen DataSet her eklenen, güncelleştirilen veya silinen 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);
public virtual int Update (System.Data.DataSet dataSet);
public abstract int Update (System.Data.DataSet dataSet);
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

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

Döndürülenler

uygulamasından başarıyla güncelleştirilen DataSetsatır sayısı.

Uygulamalar

Özel durumlar

Kaynak tablo geçersiz.

INSERT, UPDATE veya DELETE deyimini yürütme girişimi, hiçbir kaydın etkilenmesine neden oldu.

Ö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 bu satırda 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. Bir uygulama yöntemini çağırdığında Update , DataAdapter özelliği inceler RowState ve içinde yapılandırılan DataSetdizinlerin sırasına göre her satır için gerekli INSERT, UPDATE veya DELETE deyimlerini yinelemeli olarak yürütür. Örneğin, Update içindeki satırların sıralanması nedeniyle bir DELETE deyimini, ardından insert deyimini ve sonra başka bir DELETE deyimini DataTableyü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 GetChanges sırasını denetlemeniz gereken durumlarda yöntemini çağırabilir (örneğin, UPDATE'den önce INSERT). 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 SqlCommandBuilder .NET Framework veri sağlayıcısının özelliğini ayarlarsanızSelectCommand, tek tablolu güncelleştirmeler için otomatik olarak SQL deyimleri oluşturmak üzere bir veya OleDbCommandBuilder nesnesi oluşturabilirsiniz. Ardından, ayarlamadığınız tüm ek SQL deyimleri CommandBuilder tarafından oluşturulur. Bu oluşturma mantığı, anahtar sütun bilgilerinin içinde DataSetmevcut olmasını gerektirir. Daha fazla bilgi için bkz. CommandBuilders ile Komut Oluşturma.

yöntemi, Update güncelleştirme yapmadan önce ilk eşlemede listelenen tablodan satırları alır. ardından Update , özelliğinin değerini UpdatedRowSource kullanarak satırı yeniler. Döndürülen diğer satırlar yoksayılır.

verileri içine DataSetOnRowUpdated geri yüklendikten sonra olay oluşturulur ve kullanıcının uzlaştırılan DataSet satırı 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ırda yapılan değişiklikler kabul edilir.

kullanırken Updateyürütme sırası aşağıdaki gibidir:

  1. içindeki DataRow değerler parametre değerlerine taşınır.

  2. Olay OnRowUpdating oluşturulur.

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

  4. Komut olarak ayarlanırsa FirstReturnedRecord, döndürülen ilk sonuç içine DataRowyerleştirilir.

  5. Çıkış parametreleri varsa, bu parametreler içine DataRowyerleştirilir.

  6. Olay OnRowUpdated oluşturulur.

  7. DataRow.AcceptChanges çağrıldığında. Bu, güncelleştirilmiş DataRowiçin hem hem DataTable.RowChanged de DataTable.RowChanging olaylarını tetikler.

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

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

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

SourceColumn özelliği, çıkış veya giriş/çıkış parametrelerinin değerini ile geri eşlemek DataSetiç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 AcceptChanges yönteminin AcceptChanges çağrılması, veya DataTableiçindeki DataSet tüm değişiklikleri işler. Yöntem çağrılmadan önce Update bu yöntemlerden herhangi biri çağrılırsa, yöntem çağrıldığında Update başka değişiklikler yapılmadığı AcceptChanges veya AcceptChanges çağrıldığı sürece hiçbir değişiklik işlenmez.

Not

Bir satır güncelleştirilirken 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 çağırmadan önce Updateözelliğini olarak true ayarlayınContinueUpdateOnError. DataAdapter olayı içinde RowUpdated hatalara satır başına temelinde de yanıt vekleyebilirsiniz. Olay içinde özel durum oluşturmadan güncelleştirme işlemine RowUpdated devam etmek için özelliğini RowUpdatedEventArgs olarak ContinueayarlayınStatus.

üzerindeki Updateveri kaynağına yaydığınız her sütun için , UpdateCommandveya DeleteCommandöğesine bir parametre eklenmelidirInsertCommand. 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.