Aracılığıyla paylaş


Veri Kümelerindeki Verileri Kaydetme

Verileri kaydetme işlemini devam ettirmek geri özgün veri deposuna veri bir uygulama, genellikle SQL Server gibi ilişkisel bir veritabanında bulunan verileri değiştirilen olur.

Bir dataset bir önbellek etkin olduğundan — bir bellek içi kopya — veri bilgi özgün veri kaynağına yazma işlemi veri kümesindeki veriyi değiştirme işlemini ayrıdır.Birini çağırarak veritabanına veri kümelerini güncelleştirilmiş verileri gönderebilirsiniz Update bir TableAdapter veya TableAdapter'ın DBDirect yöntemlerinden birini çağırarak yöntemleri.

Değişiklikleri veritabanına bir dataset içinde gönderme hakkında daha fazla bilgi için bkz: Nasıl yapılır: TableAdapter Kullanarak Veri Güncelleştirme ve Nasıl yapılır: Veri Kümesi Değişikliklerini Veritabanına Kaydetme.

Visual Studio'nun sağladığı bir TableAdapterManager bileşen kaydeder, ilgili tablolarda veri kaydederken gerçekleştirmede yardımcı olur.Bu bileşen kaydeder veritabanı içinde tanımlanan yabancı anahtar kısıtlamalarını temel alarak doğru sırayla gerçekleşmesi sağlanır.Daha fazla bilgi için bkz. Hiyerarşik Güncelleştirmeye Genel Bakış.

Veri kümesindeki değiştirme hakkında daha fazla bilgi için bkz: Uygulamanızdaki Verileri Düzenleme.

İki aşamalı güncelleştirmeleri

Bir dataset veri kaynağını güncelleştirme iki adımdan oluşan bir işlemdir.Dataset yeni bilgilerle güncelleştirmek için ilk adımdır — yeni kayıtlar değiştirilen kaydı veya kayıtları silinir.Uygulamanız yalnızca dataset ile ilgilenir, — örneğin, dataset güncelleştirdikten sonra dataset başka işleme gerçekleştiren başka bir uygulamaya göndermeden — güncelleştirmeyle tamamladıktan sonra.

[!NOT]

Windows Forms veri bağlama mimarisi alır değişiklikleri veriye bağlı denetimleri dataset nesnesine gönderme yapar ve dataset kendi kodunuzla açıkça güncelleştirmeniz gerekmez.Daha fazla bilgi için bkz. Windows Forms Veri Bağlama.

Veri kaynağı (örneğin, bir veritabanı) güncelleştiriyorsanız, ikinci adım değişiklikleri dataset nesnesinden özgün veri kaynağına göndermektir.Diğer bir deyişle, veri kümesi güncelleştirme işlemi de değişiklikler temel bir veri kaynağına yazmaz; açıkça, bu ikinci adımı gerçekleştirmeniz gerekir.Genellikle bunu farklı bağdaştırıcılar, örneğin, bir veri kaynağından veri taşımak için veya birden çok veri kaynaklarını güncelleştirmek için kullanabilirsiniz, ancak, bir DataSet'i doldurmak için kullanılan güncelleştirme aynı TableAdapter (veya veri bağdaştırıcısı) metodunu kullanarak gerçekleştirirsiniz.

İki aşamalı güncelleştirme işlemi ve başarılı bir güncelleştirme DataRowVersion rolü

Visual Basic veri kümesi güncelleştirmeleri

Yapısal olarak, dataset veri koleksiyon kümesi olarak kullanılabilmesini sağlar.DataSet tabloları topluluğu içerir.Tabloları, satırları topluluğu içerir.Tablolar koleksiyonu olarak ortaya DataSet nesne ve kayıtları bulunan Rows topluluğu DataTable nesneler.Değişiklik yapmadan bu Koleksiyonları basitçe düzenleme tarafından bir veri kümesindeki veriler temel toplama yöntemleri kullanma olanağı sağlar, ancak veri kaynağındaki güncelleştirmek istiyorsanız, dataset değiştirilmek üzere özel olarak tasarlanmış yöntemleri kullanmanız gerekir.

Örneğin, bir veri tablosundan bir kayıt kaldırmak için çağırabilirsiniz RemoveAt yöntem tablo, Rows fiziksel olarak kayıt kümesinden siler koleksiyonu.Veri kümesi için verileri yalnızca yapılandırılmış deposu olarak kullanıyorsanız ve değişiklik bilgilerini başka bir uygulamaya gönderme hakkında endişe değil, bu şekilde koleksiyonları işleme bir dataset güncelleştirme kabul edilebilir bir yoludur.

Ancak, değişiklikleri veri kaynağına veya başka bir uygulamaya göndermek istiyorsanız, her güncelleştirmeyle ilgili değişikliği bilgisi (meta) korumak için gerekir.Daha sonra veri kaynağı veya uygulama değişiklikleri gönderdiğinizde, işlemi bulun ve uygun kayıtları güncelleştirmek için gereken bilgileri gerekir.Örneğin, veri kümesindeki bir kaydı silerseniz, silinen bir kaydı hakkında bilgi dataset içinde saklanması vardır.Bu şekilde, ne zaman DeleteCommand , TableAdapter çağrılır, silinebilmesi için böylece özgün kayıt veri kaynağında bulmak için geçmişe ait yeterli bilgi yoktur.Daha fazla bilgi için bkz: "koruma bilgileri hakkında" aşağıdaki değişiklikleri.

Veri kümeleri birleştirme

Bir DataSet nesnesinin içeriğini güncelleştirmek için birleştirme — diğer bir deyişle, bunun kopyalama bir dataset içeriğini (denir kaynak dataset) arama veri kümesine (denir hedef dataset).Veri kümeleri birleştirdiğinizde, kaynak veri kümesindeki yeni kayıtlar hedef dataset nesnesine eklenir.Ayrıca, ek kaynak veri kümesi sütunlarında hedef dataset nesnesine eklenir.Yerel bir veri kümesi varsa ve başka bir uygulama veya bileşeni XML Web hizmeti gibi ikinci bir dataset elde veri kümeleri birleştirme özellikle yararlıdır.Birden çok DataSet verilerini entegre etmeniz gerektiğinde de yararlıdır.

Ayrıca DataSet birleştirilirken, isteğe bağlı Boole argüman iletebilirsiniz (preserveChanges) başarılı olduğunu anlatan Merge yöntemi hedef kümesindeki varolan değişiklikleri korumak mi yoksa.Veri kümeleri kayıtları birden çok sürümünü korumak için kayıtları birden fazla sürümünü birleştirilmiş olduğunu unutmayın önemlidir.Birleştirilecek iki veri kümelerini bir kayıtta aşağıdaki tabloda gösterilmektedir:

DataRowVersion

Hedef veri kümesi

Kaynak veri kümesi

Özgün

James Wilson

James C.Wilson

Geçerli

Jim Wilson

James C.Wilson

Arama Merge yöntemi ile Yukarıdaki tablodaki preserveChanges=false targetDataset.Merge(sourceDataset) aşağıdaki sonuçları:

DataRowVersion

Hedef veri kümesi

Kaynak veri kümesi

Özgün

James C.Wilson

James C.Wilson

Geçerli

James C.Wilson

James C.Wilson

Arama Merge yöntemi ile preserveChanges = true targetDataset.Merge(sourceDataset, true) aşağıdaki sonuçlar:

DataRowVersion

Hedef veri kümesi

Kaynak veri kümesi

Özgün

James C.Wilson

James C.Wilson

Geçerli

Jim Wilson

James C.Wilson

Uyarı notuUyarı

İçinde preserveChanges = true senaryo, varsa RejectChanges hedef kümesindeki bir kaydı yöntemi çağrılır, daha sonra özgün verilerin döner kaynak dataset.Bu, özgün veri kaynağına hedef dataset ile güncelleştirmeye çalışırsanız, bunu güncelleştirmek için özgün bulmak mümkün olmayabilir olduğunu anlamına gelir.Ancak, başka bir dataset veri kaynağından güncelleştirilmiş kayıtları ile doldurarak eşzamanlılık ihlali engelleyebilir ve sonra bir birleştirme gerçekleştirme eşzamanlılık ihlali engeller. (Dataset girdikten sonra başka bir kullanıcı veri kaynağı içindeki bir kaydı değiştirdiğinde eşzamanlılık ihlali oluşur.)

Güncelleştirme kısıtlamaları

Varolan bir veri satırı değişiklik yapmak için ekleme veya tek tek sütunlarda verileri güncelleştirin.Veri kümesini (örneğin, yabancı anahtarları veya NULL olmayan kısıtlamalar) kısıtlamaları içeriyorsa, siz kaydı güncelleştirmek mümkündür — bir sütun güncelleştirme işlemi tamamlandıktan sonra ancak sonrakine ulaşmadan — kaydı geçici olarak bir hata durumunda olabilir.

Erken kısıtlama ihlalleri önlemek için güncelleştirme kısıtlamaları geçici olarak askıya alabilirsiniz.Bu iki amaca hizmet eder:

  • Hata, başka bir sütuna ulaşmadan bir sütununu güncelleştirdiğinizde atılan engeller.

  • Belirli bir güncelleştirmeyi duraklatır engeller olayları oluşur (genellikle doğrulama için kullanılan olayları).

Bir güncelleştirmeyi tamamladıktan sonra denetleme kısıtlaması, ayrıca güncelleştirme olayları yeniden etkinleştirir ve onları harekete geçiren, yeniden etkinleştirebilirsiniz.

[!NOT]

Windows Forms'da datagrid yerleşik veri bağlama mimarisi odak dışında bir satıra taşır ve açıkça çağırmak zorunda değilsiniz kadar denetleme kısıtlaması askıya BeginEdit, EndEdit veya CancelEdit yöntemleri.

Kısıtlamaları olan otomatik olarak devre dışı Merge yöntemi, dataset üzerinde çağrılır.Birleştirme tamamlandığında etkin duruma getirilemez, dataset üzerinde kısıtlamalar varsa daha sonra bir ConstraintException atılır.Bu durumda, EnforceConstraints özelliği false ve tüm kısıtlama ihlalleri sıfırlamadan önce çözülmesi EnforceConstraints özelliğine true.

Bir güncelleştirmeyi tamamladıktan sonra denetleme kısıtlaması, ayrıca güncelleştirme olayları yeniden etkinleştirir ve onları harekete geçiren, yeniden etkinleştirebilirsiniz.

Olayları askıya alma hakkında daha fazla bilgi için bkz: Nasıl Yapılır: Bir Veri Kümesini Doldururken Kısıtlamaları Kapatma.

Veri kümesi güncelleştirme hataları

Bir veri kümesindeki bir kaydı güncelleştirirken hata olasılığı vardır.Örneğin, yanlışlıkla veri yanlış veri türü, bir sütuna yazabilirsiniz veya çok uzun veya diğer bir bütünlük sorunu olan.Ayrıca, herhangi bir güncelleştirme olay aşamasında özel hataları yükseltebilirsiniz uygulamaya özgü doğrulama denetimleri olabilir.Daha fazla bilgi için bkz. Veri Kümelerindeki Verileri Doğrulama.

Değişiklikler hakkında bilgi koruma

Bir DataSet'teki değişiklikleri hakkında bilgi iki şekilde güncelleştirilir: bayrak eklemek, değişip değişmediğini gösterir satır olarak (RowState) ve bir kayıt birden çok kopyasını tutma (DataRowVersion).Bu bilgileri kullanarak, işlem dataset içinde nelerin değiştiğini belirlemek ve uygun güncelleştirmeleri veri kaynağına gönderebilir.

RowState özelliği

RowState Özelliği, bir DataRow belirli bir veri satırı durumu hakkında bilgi sağlayan bir değer nesnesidir.

Aşağıdaki tablo olası değerleri ayrıntıları DataRowState numaralandırma:

DataRowState değeri

Tanımlama

Added

Satır için bir öğe olarak eklenen bir DataRowCollection. (Son anda yoktu çünkü bu durum satırında karşılık gelen özgün sürümü yok AcceptChanges yöntemi çağrıldı).

Deleted

Kullanarak satır silindi Delete , bir DataRow nesne.

Detached

Satır oluşturuldu, ancak herhangi bir parçası DataRowCollection.A DataRow nesne oluşturulduktan hemen sonra ve bir koleksiyona eklenmeden önce veya bir derlemeden kaldırdıysanız bu durumda değil.

Modified

Satır, sütun değeri herhangi bir şekilde değiştirildi.

Unchanged

Satır bu yana değişmemiştir AcceptChanges son kez çağrıldı.

DataRowVersion sabit listesi

Veri kümeleri kayıtları birden çok sürümü koru.DataRowVersion Numaralandırılmasını bir DataRow nesne belirli bir sürümüne geri dönmek için kullanılan bir değerdir bir DataRow nesne.

Aşağıdaki tablo olası değerleri ayrıntıları DataRowVersion numaralandırma:

DataRowVersion değerini

Tanımlama

Current

Kayıt geçerli sürümünü kaydında son başlatılmasından bu yana gerçekleştirilen tüm değişiklikleri içeren AcceptChanges çağrıldı.Satır silinmişse geçerli sürümü yoktur.

Default

Varsayılan değer olan dataset Şeması veya veri kaynağı tarafından tanımlandığı şekilde bir kayıt.

Original

Son saati değişiklikleri dataset içinde kaydedilmiş haliyle bir kaydın özgün sürümünün kaydı kopyasıdır.Bunun pratikteki anlamý, bu genellikle bir kayıt okundu olarak veri kaynağından sürümüdür.

Proposed

Bir güncelleştirme çalışırken, geçici olarak kullanılabilen bir kayıt önerilen sürümü — yani arasındaki süreyi aradığınız BeginEdit yöntemi ve EndEdit yöntem.Genellikle bir olay işleyicisi kaydında önerilen sürümü gibi eriştiğinize RowChanging.Çağırma CancelEdit yöntemi değişiklikleri tersine çevirir ve önerilen sürümü veri satırı siler.

Özgün ve geçerli sürümler güncelleştirme bilgileri bir veri kaynağına aktarılan yararlı olur.Veri kaynağı için bir güncelleştirme gönderildiğinde, genellikle, yeni veritabanı için bir kayıt geçerli sürümünde bilgilerdir.Özgün sürüm bilgileri güncelleştirmek için kayıt bulmak için kullanılır.Örneğin, bir kaydın birincil anahtarı nerede değiştirilir bir durumda, uygun kayıt değişiklikleri güncelleştirmek için veri kaynağı içinde bulmak için bir yol olması gerekir.Özgün bir sürümü varsa, sonra kayıt büyük olasılıkla sadece ekstra istenmeyen bir kaydı, ancak yanlış ve güncel bir kayıtta ortaya çıkan veri kaynağına eklenmesi.İki sürüm de tutarlılık denetimi kullanılır; Kayıt DataSet'e yüklendikten sonra kaydın değiştirilip değiştirilmediğini belirlemek için veri kaynağındaki karşı özgün sürümünü karşılaştırabilirsiniz.

Önerilen sürüm aslında dataset nesnesine değişiklikler önce doğrulama gerçekleştirmek istediğinizde yararlıdır.

Kayıtları değiştirmiş olsanız bile, yoksa her zaman özgün veya geçerli satır sürümleri.Tabloya yeni bir satır eklediğinizde, özgün sürümü, yalnızca geçerli sürümü yoktur.Benzer şekilde, tablo çağırarak bir satır silmek, Delete yöntemi, bir özgün sürümü, ancak geçerli bir sürümü yok.

Veri satırı 's sorgulayarak bir kaydın belirli bir sürümü olup olmadığını görmek için test edebilirsiniz HasVersion yöntem.Ya da bir kaydın sürüm geçirerek erişebilirsiniz bir DataRowVersion bir sütunun değerini istediğinde isteğe bağlı bağımsız değişken olarak numaralandırma değeri.

Değiştirilen kayıtları alma

Bir veri kümesindeki her kaydı güncelleştirmeyin yaygındır.Örneğin, bir kullanıcı bir Windows Forms ile çalışmıyor olabilir DataGridView pek çok kayıt görüntüleyen denetim.Ancak, kullanıcı sadece birkaç kayıtları güncelleştirmek, silmek ve yeni bir tane ekleyin.Veri kümeleri ve veri tabloları, bir yöntem sağlar (GetChanges), değiştirilen satırları döndüren için.

Alt kümelerini kullanarak değiştirilen kayıtları oluşturabilirsiniz GetChanges yöntemi, veri tablosu (GetChanges) veya veri kümesi (GetChanges) kendisi.Veri tablosu için yöntemini çağırırsanız, yalnızca değiştirilen kayıtların bulunduğu tablonun bir kopyasını döndürür.Dataset nesnesinde yöntemini çağırın, benzer şekilde, yalnızca değiştirilen kayıtları içeren yeni bir dataset içinde alırsınız.GetChangestek başına değişen tüm kayıtları döndürür.Buna karşılık, geçirerek istenen DataRowState parametre olarak GetChanges yöntemi, hangi alt kümesinin değiştirilen kayıtları belirtebilirsiniz: yeni eklenen kayıtları, kayıtlar silinmek üzere işaretlenmiş kayıtları ayrılmış veya değiştirilmiş kayıtlar için.

Değiştirilen kayıtların bir alt kümesini alma kayıtları işleme için başka bir bileşeni göndermek istediğinizde özellikle yararlıdır.Tüm DataSet nesnesini göndermek yerine, yalnızca bileşen gereken kayıtları alarak bir bileşeni ile iletişim kurmada ek yükünü azaltabilir.Daha fazla bilgi için bkz. Nasıl yapılır: Değiştirilen Satırları Alma.

DataSet'teki değişiklikleri yapılıyor

Dataset nesnesinde yapılan değişiklikler gibi RowState değiştirilen satır özelliği ayarlanır.Kayıtların geçerli ve özgün sürümleri kurulmuş ve saklanır ve sizin tarafınızdan kullanılabilir yapılan RowVersion özelliği.Değişiklikleri gösteren bu özellikler, depolanan meta veriler, veri kaynağına uygun güncelleştirmeleri göndermek için gereklidir.

Veri kaynağı geçerli durumu değişiklikleri yansıtmak, artık bu bilgileri korumak gerekir.Tipik olarak, dataset ve kaynağı ne zaman eşit iki kez vardır:

  • Hemen sonra veri kümesine, veri kaynağından okumak gibi bilgi yüklü.

  • Değişiklikleri dataset nesnesinden veri kaynağına gönderdikten sonra (ancak önce değil, değişiklikleri veritabanına göndermek için gerekli değişiklik bilgisini kaybeder çünkü).

Çağırarak dataset bekleyen değişiklikleri onaylayabilirsiniz AcceptChanges yöntem.Genellikle, AcceptChanges , uygulamanızda aşağıda belirtilen saatlerde çağrılabilir.

  • Sonra dataset yüklü.TableAdapter's çağırarak dataset yüklemek, Fill yöntemi, daha sonra bağdaştırıcı otomatik olarak kaydeder Değişiklikleri sizin için.Başka bir dataset içinde birleştirerek bir dataset yüklerseniz, ancak, daha sonra değişiklikleri el ile uygulamak gerekir.

    [!NOT]

    Bağdaştırıcı çağrılırken değişiklikleri otomatik olarak yürüten engelleyebilirsiniz Fill ayarlayarak yöntemi AcceptChangesDuringFill özelliği bağdaştırıcının false.Bu ayarlanırsa false, sonra RowState , fill sırasında eklenen her satır ayarlı olduğu Added.

  • Bir XML Web hizmeti gibi başka bir işleme sonra dataset değişikliklerini gönderdiniz.

    Uyarı notuUyarı

    Bu şekilde değişiklik yapılıyor, herhangi bir değişiklik bilgilerini siler.Kadar gerçekleştirdikten sonra işlemleri uygulamanızı ne değiştirir bilerek bağlı olduğu dataset nesnesinde yapılan değişiklikleri kabul değil.

Bu yöntem, aşağıdakileri yerine getirir:

AcceptChanges Yöntemi üç düzeyde kullanılabilir.Üzerinde arama bir DataRow ilgili satır değişiklikleri uygular nesne.Ayrıca, üzerinde çağırabilirsiniz bir DataTable tüm satırları tablo ya da uygulamak için nesne DataSet DataSet'in tüm tabloların tüm kayıtlardaki tüm bekleyen değişiklikleri uygulamak için nesne.

Hangi değişiklikleri kaydedilmeden ne yönteminin üzerinden çağrıldığı nesne üzerinde temel alan aşağıdaki tabloda açıklanmaktadır.

Method

Sonuç

DataRow.AcceptChanges

Yalnızca belirli satır değişikliklerin yapıldığından

DataTable.AcceptChanges

Belirli tablodaki tüm satırlar üzerinde değişikliklerin yapıldığından

DataSet.AcceptChanges

Veri kümesi tüm tablolardaki tüm satırlar üzerinde değişikliklerin yapıldığından

[!NOT]

TableAdapter's çağırarak dataset yüklemek, Fill yöntemi, sizde olmayan açıkça; değişiklikleri kabul etmek Varsayılan olarak Fill yöntem çağrıları AcceptChanges veri tablosu doldurma bitirdiğinde yöntemi.

İlgili bir yöntemi RejectChanges, değişikliklerin etkisini kopyalayarak geri alır Original sürümüne geri Current sürümü kayıtları ve ayar RowState , her kayıt geri Unchanged.

Verileri Doğrulama

Uygulamanızdaki veri için geçirilen işlemlerin gereksinimlerini karşıladığını doğrulamak için genellikle doğrulama eklemeniz gerekir.Bu form kullanıcı girişi doğru uygulamanız başka bir uygulama tarafından gönderilen veri doğrulama veya bile bilgi, bileşenin içinde hesaplanan denetimi verilerinizi kısıtlamaları içinde kalan kaynak ve uygulama gereksinimleri denetleme gerektirebilir.

Verileri birkaç yolla doğrulayabilirsiniz:

  • Verileri doğrulamak için uygulamanız için kod ekleyerek iş katmanı içinde.Dataset, bunu yapmak için bir yerdir.DataSet nesnesinin bazı arka plan doğrulama faydaları sağlar — gibi sütun ve satır değerlerini değiştirmek gibi değişiklikleri doğrulamak için yeteneği.Daha fazla bilgi için bkz. Veri Kümelerindeki Verileri Doğrulama.

  • Formlar için doğrulama ekleyerek sunum katmanı içinde.Daha fazla bilgi için bkz. Windows Forms'ta Kullanıcı Girdisi Doğrulama.

  • Veri kaynağına veri göndererek arka plan, verileri — Örneğin, veritabanı — ve kabul etme veya reddetme verileri izin vererek.Veri doğrulama ve hata bilgisini sağlayan özellikleri Gelişmiş bir veritabanıyla çalışıyorsanız, bunun geldiği yeri ne olursa olsun veri doğrulamak için çünkü bu pratik bir yaklaşım olabilir.Ancak, bu uygulamaya özgü doğrulama gereksinimlerini karşılayacak değil.Ayrıca, veri doğrulama veri kaynağı içinde çok sayıda gidiş gelişlerini uygulamanızın arka uç tarafından harekete geçirilen doğrulama hatalarını çözme nasıl kolaylaştırır bağlı olarak veri kaynağına neden olabilir.

    Güvenlik NotuGüvenlik Notu

    Data Command ile kullanırken, bir CommandType özelliğini Text, dikkatle veritabanınıza geçirmeden önce bir istemciden gönderilen bilgilere bakın.Kötü niyetli kullanıcılar göndermek deneyin (ekleme) değiştirilmiş veya ek SQL deyimleri yetkisiz erişim veya veritabanı zarar verecek bir çaba içinde.Bir veritabanı için kullanıcı girişi transfer etmeden önce her zaman bilgi geçerli olduğunu doğrulamanız gerekir; Parametreli sorgu veya saklı yordamlar mümkün olduğunda her zaman kullanmak iyi bir uygulamadır.Daha fazla bilgi için bkz. Script Exploits Overview.

Bir veri kümesindeki değişiklikleri yapıldıktan sonra değişiklikleri veri kaynağına iletebilir.En yaygın arama yoluyla bunu Update yöntemini veya bir TableAdapter (veri bağdaştırıcısı).Veri tablosundaki her kayıt aracılığıyla yöntemi döngüleri belirleyen ne tür bir güncelleştirme gereklidir (güncelleştirme, ekleme veya silme), eğer varsa ve sonra uygun komutu yürütür.

Bir güncelleştirme veri kaynağına nasıl iletilir

Güncelleştirmeleri nasıl yapılır örnek, tek bir veri tablosu içeren bir DataSet'e uygulamanızın kullandığı varsayalım.Uygulama veritabanından iki satır getirir.Sonra alma, bellek içi veri tablosu aşağıdaki gibi görünür:

(RowState)     CustomerID   Name             Status
(Unchanged)    c200         Robert Lyon      Good
(Unchanged)    c400         Nancy Buchanan    Pending

Uygulamanızın "Yeğlenen" Nancy Buchanan'ın durumunu değiştirir Değeri, bu değişikliğin bir sonucu olarak RowState ilgili satır özellik değişirse Unchanged için Modified.Değeri RowState ilk satırı için özellik kalır Unchanged.Veri tablosu şimdi şöyle görünür:

(RowState)     CustomerID   Name             Status
(Unchanged)    c200         Robert Lyon      Good
(Modified)     c400         Nancy Buchanan    Preferred

Uygulama şimdi aramalarınız Update yöntemini dataset veritabanına aktarmak için.Yöntemi her satıra sırayla olup olmadığını denetler.Özgün veritabanından getirildikten sonra satır değişmediği için ilk satırı için veritabanı için SQL deyimi yok yöntemine iletir.

İkinci satır, ancak, Update yöntemi otomatik olarak uygun verileri komutu çalıştırır ve veritabanına iletir.SQL deyiminin özel sözdizimi alttaki veri deposu tarafından desteklenen SQL diyalekti bağlıdır.Ancak aşağıdaki genel nitelikler aktarılan SQL deyiminin dikkate değer:

  • Aktarılan SQL UPDATE deyimi deyimidir.Bağdaştırıcı olduğundan güncelleştirme deyimini bilir değerini RowState özelliği Modified.

  • Aktarılan SQL deyimini SQL güncelleştirme deyimini hedef satır olduğunu belirten bir WHERE yan tümcesi içeren, CustomerID = 'c400'.Bu kısmı bir SELECT deyimi hedef satırdaki tüm diğerlerinden çünkü ayıran CustomerID hedef tablonun birincil anahtarıdır.WHERE yan tümcesi kaydın özgün sürümünden türetilmiş için bilgileri (DataRowVersion.Original), satır tanımlamak için gerekli değerleri değiştiği durumda.

  • Değiştirilmiş sütunların yeni değerlerini ayarlamak için SET yan tümcesi, aktarılan SQL deyimi içerir.

    [!NOT]

    Yoksa TableAdapter's UpdateCommand bir saklı yordamın adını özelliğinin ayarlandığı, bağdaştırıcı bir SQL ifadesi oluşturmak değil.Bunun yerine, geçirilen uygun parametreleri ile saklı yordamı çağırır.

Kağıt geçirme Parametreler

Veritabanı içinde güncelleştirilecek kayıtları için değerler genellikle parametreleri kullanarak geçirilir.Zaman TableAdapter's Update yöntemi çalıştırılır bir UPDATE deyimi, parametre değerleri doldurmak gerekli.Bu değerleri alır Parameters koleksiyonu için uygun veri komut — bu durumda, UpdateCommand TableAdapter nesnesi.

Bir veri bağdaştırıcısı oluşturmak için Visual Studio Araçları'nı kullandıysanız, UpdateCommand nesne bir tabloda her parametre yer tutucu karşılık parameters topluluğu içerir.

SqlParameter.SourceColumn Özelliği, her parametrenin veri tablosunda sütun işaret eder.Örneğin, SourceColumn özelliği için au_id ve Original_au_id parametreleri, veri tablosundaki her sütun Yazar Kimliği içeren için ayarlanır.Zaman bağdaştırıcının Update yöntemi çalışır, Yazar Kimliği sütunu güncelleştirilmekte kaydından okur ve INTO deyimi değerleri doldurur.

Bir UPDATE deyimi içinde iki yeni değerleri (Bu kayıtta yazılacak) yanı eski değerleri (güncelleştirilecek kayıt veritabanında yer alabilir böylece) belirtmeniz gerekir.Bu nedenle her değer için iki parametre vardır: biri SET yan tümcesi ve farklı bir WHERE yan tümcesi.Her iki parametre güncelleştirilmekte kaydından veri okumak, ancak bunlar farklı sürümlerini parametresine ait bağlı sütun değeri elde SqlParameter.SourceVersion özelliği.Parametre SET yan tümcesi için geçerli sürüm alır ve parametre WHERE yan tümcesi için özgün sürümü alır.

[!NOT]

Değerleri de ayarlayabilirsiniz Parameters koleksiyonu kendiniz genellikle veri bağdaştırıcı için bir olay işleyicisi içinde yaptığınız kod RowChanging olay.

İlgili tabloları güncelleştirmek

DataSet'in birden çok tablo varsa, bunları tek tek arayarak güncelleştirmek zorunda Update yöntemi her veri bağdaştırıcısı, ayrı ayrı.Tablo üst-alt ilişkisi varsa, belirli bir sırada veritabanı güncelleştirmeleri göndermek zorunda kalacağı olasıdır.Hem üst hem de ilgili alt kayıtları bir veri kümesine eklediğiniz yaygın bir senaryo ise — örneğin, yeni bir müşteri kaydı ve bir veya daha fazla ilgili sipariş kayıtları.Veritabanı ilişkisel bütünlük kurallarını zorlama, ana kaydı oluşturmadan önce yeni alt kayıtlar veritabanına gönderirseniz, sonra onu hataları ortaya çıkaracaktır.

DataSet nesnesinin ilişkili kayıtları silerseniz, buna karşılık, sonra genellikle güncelleştirmeleri ters sırada göndermek zorunda: alt tablonun ilk olarak, tablo sonra üst.Aksi takdirde, veritabanının bilgi tutarlılığı kuralları ilgili alt kayıtları hala varken bir ana kayıt silindiğinde engeller çünkü bir hata yükseltmek muhtemeldir.

Bu sırayı takip ilgili tabloları güncelleştirmeleri göndermek için genel kural şudur:

  1. Alt tablo: kayıtları silin.

  2. Üst tablo: ekleme, güncelleştirme ve kayıtları silin.

  3. Alt tablo: ekleme ve güncelleştirme kayıtları.

  4. Daha fazla bilgi için bkz. İzlenecek yol: Verileri Bir Veritabanına Kaydetme (Birden Çok Tablo).

Eşzamanlılık denetimi

Veri kaynağından veri kümeleri kesildiği, veri kaynağındaki kayıtlar üzerinde kilitleri tutmayın.Bu nedenle, veritabanını güncelleştirmek isterseniz ve eşzamanlılık denetimi korumak, uygulamanız için önemli ise, veri kümesindeki kayıtları veritabanındaki kayıtlarla uzlaşmalıdırlar.Örneğin, veritabanındaki kayıtları son dataset doldurma işleminden sonra değişmiş bulabilirsiniz.Bu durumda, veritabanı kaydı ya da, dataset içinde olan değiştirilmiş bir kaydı yapılması gerekenleri belirlemek için uygulama uygun mantık yürütmesi gerekiyor.

Ayrıca bkz.

Görevler

Nasıl yapılır: TableAdapter Kullanarak Veri Güncelleştirme

Kavramlar

TableAdapter Genel Bakışı

Uygulamanızı Veri Almaya Hazırlama

Uygulamanıza Veri Getirme

Visual Studio'da Verilere Denetimler Bağlama

Uygulamanızdaki Verileri Düzenleme

Verileri Doğrulama

Verileri Kaydetme

Diğer Kaynaklar

Visual Studio'da Veri Uygulamalarına Genel Bakış

Visual Studio'da Verilere Bağlanma