Aracılığıyla paylaş


DataSet verileri kaydetme

Verileri kaydetme devam eden işlemi uygulamaya geri özgün veri deposu, genelde sql Server gibi ilişkisel bir veritabanında bulunan verileri değiştirmiş olur.

Bir dataset bir önbellek etkin olduğundan — belleğinizdeki kopyasını — veri özgün veri kaynağına bilgi yazma işlemi DataSet'teki veriyi değiştirme işleminden farklıdır. Birini çağırarak veritabanına veri kümeleriyle çalışma güncelleştirilmiş verileri gönderebilir Update bir TableAdapter veya TableAdapter'ın DBDirect yöntemlerinden birini çağırarak yöntemleri.

Değişiklikleri bir dataset veritabanına geri gönderme hakkında daha fazla bilgi için bkz: Nasıl yapılır: bir TableAdapter kullanarak veri güncelleştirme ve Nasıl yapılır: Dataset değişikliklerini veritabanına Kaydet.

Visual Studio sağlayan bir TableAdapterManager ilgili tablolarda veri kaydederken kaydeder gerçekleştirmede yardımcı bileşeni. Bu bileşen kaydeder veritabanı içinde tanımlanan yabancı anahtar kısıtlamalarını temel doğru sırada gerçekleşmesi sağlanır. Daha fazla bilgi için bkz. Hiyerarşik Update genel bakış.

DataSet'teki veriyi değiştirme hakkında daha fazla bilgi için bkz: Uygulamanızın veri düzenleme.

İki aşama 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ım olur — yeni kayıtlar değiştirilemez kayıtlar ya da kayıtları silinemez. Uygulamanız yalnızca dataset ile ilgili olduğu, — örneğin, dataset güncelleştirdikten sonra dataset ilave işlem gerçekleştiren başka bir uygulamaya göndermeden — güncelleştirme ile tamamlanmış olur.

Not

Windows Forms'da veri bağlama mimarisi götüren değişiklikleri veriye bağlı denetimler dataset nesnesine gönderme dikkate ve açıkça kendi kodunuzla DataSet nesnesini güncelleştirmek gerekmez.Daha fazla bilgi için bkz. Windows Forms veri bağlama.

Bir veri kaynağına (örneğin, bir veritabanı) güncelleştiriyorsanız, ikinci adımdaki değişiklikleri dataset nesnesinden özgün veri kaynağına göndermektir. Diğer bir deyişle, dataset güncelleştirme işlemini de değişiklikleri aracılığıyla bir alttaki veri kaynağına yazmaz; açıkça, bu ikinci adımı gerçekleştirmeniz gerekir. Bunu, genellikle 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 de kullanılabilir olsa da, DataSet'i doldurmak için kullanılan aynı TableAdapter (ya da veri bağdaştırıcısı)'ın Update yöntemi çağrılarak yapmak.

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

Visual Basic veri kümesi güncelleştirmeleri

Yapısal olarak, dataset veri koleksiyonu kümesi olarak kullanılabilmesini sağlar. DataSet tabloları koleksiyonu içerir. Tablo satır koleksiyonu içerir. Tabloların bir topluluğu olarak maruz DataSet nesnesi ve kayıtları bulunan Rows topluluğu DataTable nesneler. Değişiklik yapmadan bu Koleksiyonları basitçe işleme göre bir DataSet'teki veriye taban toplama yöntemleri kullanarak mümkündür ancak alttaki veri kaynağını güncelleştirmek istiyorsanız, dataset değiştirilmek üzere özel olarak tasarlanmış yöntemlerini kullanmanız gerekir.

Örneğin, bir veri tablosundan bir kayıt kaldırmak için çağırabilir RemoveAt yöntemi tablonun, Rows koleksiyon, fiziksel olarak dataset nesnesinden kaydı siler. Dataset verilerini yalnızca yapılandırılmış deposu olarak kullanıyorsanız ve değişiklik bilgilerini başka bir uygulamaya iletilmesi hakkında endişe değil, bu şekilde koleksiyonları işleme bir DataSet nesnesini güncelleştirmek için kabul edilebilir bir şekilde olur.

Ancak, bir veri kaynağına veya başka bir uygulama değişiklikleri göndermeyi düşünüyorsanız, her güncelleştirmeyle ilgili değişikliği bilgisi (meta) korumak gerekir. Daha sonra değişiklikleri veri kaynağına ya da uygulama gönderdiğinizde, işlem bulun ve uygun kayıtları güncelleştirmek için gerekli bilgilere sahip. Örneğin, dataset içindeki bir kaydı silerseniz, silinen kayıt bilgilerini dataset içinde tutulan vardır. Bu şekilde, ne zaman DeleteCommand , TableAdapter çağrılır, özgün kaydı silinmiş, böylece veri kaynağında bulmak için tarihsel yeterli bilgi yoktur. Daha fazla bilgi için bkz: "Bakımı bilgileri hakkında" aşağıdaki değişiklikleri.

DataSet nesneleri birleştirme

Bir DataSet nesnesinin içeriğini güncelleştirmek için birleştirme — başka bir deyişle, bunun kopyalama bir dataset içeriğini (denir kaynak dataset) çağıran dataset nesnesine (denir hedef dataset). DataSet'ler birleştirdiğinizde, kaynak DataSet'teki yeni kayıtları hedef dataset nesnesine eklenir. Ayrıca, ek sütunlar kaynak dataset içindeki hedef dataset nesnesine eklenir. Yerel bir dataset vardır ve başka bir uygulama ya da bir xml Web servisi gibi bir bileşen ikinci bir dataset elde etmek DataSet'ler birleştirme özellikle yararlıdır. Birden çok DataSet verilerini entegre etmeniz gerektiğinde de yararlıdır.

DataSet'ler birleştirilirken, ayrıca isteğe bağlı Boole argüman iletebilirsiniz (preserveChanges) başarılı olduğunu anlatan Merge yöntemi hedef dataset içindeki varolan değişiklikleri korumak mi. DataSet'ler kayıtları birden çok sürümünü korumak için birden fazla sürümü kayıtların birleştirilen aklınızdan çıkarmayın önemlidir. Birleştirilecek iki DataSet'i bir kayıtta aşağıdaki tabloda gösterilmektedir:

DataRowVersion

Hedef dataset

Kaynak veri kümesi

Özgün

Yazan: James Wilson

James c. Wilson

Geçerli

Jim Wilson

James c. Wilson

Arama Merge yöntemi ile yukarıdaki tabloda preserveChanges=false targetDataset.Merge(sourceDataset) aşağıdakilerden oluşur:

DataRowVersion

Hedef dataset

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ğıdakilerden oluşur:

DataRowVersion

Hedef dataset

Kaynak veri kümesi

Özgün

James c. Wilson

James c. Wilson

Geçerli

Jim Wilson

James c. Wilson

Uyarı

De preserveChanges = true senaryosu, RejectChanges hedef dataset içindeki bir kaydı yöntemi çağrılır ve 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 satır 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 bir eşzamanlılık ihlali önlemek ve birleştirme işlemi bir eşzamanlılık ihlali engeller.(Bir eşzamanlılık ihlali dataset doldurulmuş sonra başka bir kullanıcı veri kaynağı içindeki bir kaydı değiştirdiğinde gerçekleşir.)

Güncelleştirme kısıtlamaları

Varolan bir veri satırı için değişiklik yapmak için ekleyin veya tek tek sütunlarda verileri güncelleştirin. Dataset sınırlamaları (yabancı anahtarlar veya yapılamayan 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:

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

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

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

Not

Windows Forms'da datagrid yerleşik veri bağlama mimarisi odak satır 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 nesnesinde çağrıldığında. Birleştirme tamamlandığında tüm kısıtlamaları etkin duruma getirilemez, dataset, daha sonra bir ConstraintException atılır. Bu durumda, EnforceConstraints özelliği ayarlanmış false ve tüm kısıtlama ihlalleri sıfırlamadan önce çözümlenmesi EnforceConstraints özelliğine true.

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

Olayları askıya alma hakkında daha fazla bilgi için bkz: Nasıl yapılır: bir Dataset doldururken kısıtlamalarını devre dışı bırakmak.

DataSet Update hataları

Dataset içindeki bir kaydı güncelleştirirken hata olasılığı vardır. Örneğin, yanlışlıkla veri yanlış veri türü olan bir sütunda yazdığınız ya da çok uzun veya başka bir bütünlük sorun. Buna ek olarak, güncelleştirme olay herhangi bir aşamasında özel hataları yükseltebilirsiniz uygulamaya özgü doğrulama denetimleri olabilir. Daha fazla bilgi için bkz. DataSet içindeki veri doğrulama.

Değişiklikler hakkındaki bilgileri koruma

Bir dataset nesnesindeki değişikliklerle ilgili bilgileri iki yolla korunur: onu değiştirilip değiştirilmediğini gösterir satır bayrak eklemek tarafından (RowState) ve birden çok kopyası olan bir kayıt tutma (DataRowVersion). Bu bilgileri kullanarak işlemler dataset içinde nelerin değiştiğini belirlemek ve uygun güncelleştirmeleri veri kaynağına gönderebilir.

y2ad8t9c.collapse_all(tr-tr,VS.110).gifRowState ö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

Description

Added

Satıra bir madde olarak eklenen bir DataRowCollection. (Son anda yoktu bu yana bu durumu bir satıra karşılık gelen özgün sürümü yok AcceptChanges yöntemi çağrıldı).

Deleted

Kullanarak satır silindi Delete , bir DataRow nesnesi.

Detached

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

Modified

Sütun değeri satırda herhangi bir şekilde değiştirildi.

Unchanged

Satır bu yana değişmiş değil AcceptChanges son olarak adlandırılır.

y2ad8t9c.collapse_all(tr-tr,VS.110).gifDataRowVersion numaralandırma

DataSet'ler kayıtları birden çok sürümünü korumak. DataRowVersion Numaralandırmasına bir DataRow nesnesi, belirli bir sürümüne geri dönmek için kullanılan bir değer bir DataRow nesnesi.

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

DataRowVersion değerini

Description

Current

Son yedeklemeden bu yana kayıt üzerinde yapılan tüm değişiklikler kayıt geçerli sürümünü 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

Bir kaydın özgün sürümü, son saati değişiklikleri dataset içinde kaydedilmiş haliyle kaydı bir kopyasıdır. Yaptığınızdan bu genellikle bir kayıt okundu olarak veri kaynağından sürümüdür.

Proposed

Önerilen bir güncelleştirme iken geçici olarak mevcut olan bir kaydı sürümü — yani arasındaki süre aradığınız BeginEdit yöntemi ve EndEdit yöntemi. Genellikle bir kayıt için bir olay işleyicisi'ndeki önerilen sürümü gibi eriştiğiniz RowChanging. Çağırma CancelEdit yöntemi değişiklikleri geri alır ve önerilen veri satırı sürümünü siler.

Özgün ve güncel sürümleri için veri kaynağını güncelleştirme bilgileri aktarırken faydalıdır. Veri kaynağına gönderilen bir güncelleştirme olduğunda, genelde 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ı yeri değiştirilen 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 kaydı büyük olasılıkla yalnızca ekstra istenmeyen bir kaydı, ancak tutarsız ve güncel bir kayıtta ortaya çıkan veri kaynağına eklenmesi. İki sürüm de eşzamanlama 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 karşılaştırabilirsiniz.

Önerilen sürüm aslında dataset nesnesine değişiklikleri yaptıktan önce doğrulama gerçekleştirmek gerektiğinde kullanışlıdır.

Kayıtları değiştirmiş olsanız bile, yok 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, tablonun çağırarak bir satırı silmek, Delete yöntemi, özgün sürümü, ancak geçerli bir sürümü vardır.

Veri satırı 's sorgulayarak, bir kaydın belirli bir sürüm olup olmadığını görmek için test edebilirsiniz HasVersion yöntemi. Ya da bir kaydın sürüm ileterek erişmek 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 dataset nesnesindeki her kaydı güncelleştirmesi değil 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ı yalnızca birkaç kaydı güncelleştirmek, silmek ve yeni bir tane ekler. DataSet ve veri tablolarını sağlayacak bir yöntem (GetChanges) değiştirilmiş satırları döndüren için.

Alt kümelerini kullanarak değiştirilen kayıtları oluşturabilir GetChanges yöntemi veri tablosunun (GetChanges) veya dataset (GetChanges) kendisi. Veri tablosu için yöntemini çağırırsanız, yalnızca değiştirilen kayıtları içeren tablonun bir kopyasını döndürür. Dataset nesnesinde yöntem çağrısı, benzer şekilde, yalnızca değiştirilen kayıtları içeren yeni bir dataset içinde alırsınız. GetChangeskendisi tarafından değiştirilen tüm kayıtları döndürür. Buna karşılık, suretiyle istenilen DataRowState parametre olarak GetChanges yöntemi, istediğiniz değiştirilen kayıtların hangi altkümesinin belirtebilirsiniz: yeni eklenen kayıtları, kayıtlar silinmek üzere işaretlenmiş kayıtlar ilişkisi kesildi veya değiştirilmiş kayıtlar için.

Değiştirilen kayıtların bir alt kümesini alma, özellikle işlenmek üzere başka bir bileşen kaydı göndermek istediğinizde kullanışlıdır. Tüm DataSet nesnesini göndermek yerine yalnızca bileşen gereken kayıtları edinerek bileşeni ile iletişim kurmada yükünü azaltabilir. Daha fazla bilgi için bkz. Nasıl yapılır: Al değiştirilen satırları.

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

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

Veri kaynağı geçerli durumunu değişiklikleri yansıtmak, artık bu bilgileri tutmak gerekir. Genellikle, vardır iki kez dataset ve kaynağı da eşzamanlı olmamasına olduğu durumlar:

  • Hemen sonra ne zaman veri kaynağından okumak gibi dataset nesnesine bilgi yüklemiş olduğunuz.

  • 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öntemi. Genellikle, AcceptChanges uygulamanızdaki aşağıda belirtilen saatlerde denir.

  • Sonra dataset yüklü. TableAdapter's çağırarak dataset yük, 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ırken değişiklikleri otomatik olarak yapılıyor engellemek 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ın ayarlanmış olduğunu Added.

  • Bir xml Web servisi gibi başka bir işleme sonra dataset deðiþikliklerini gönderdiniz.

    Uyarı

    Bu şekilde değişiklik yapılıyor, herhangi bir değişiklik bilgilerini siler.Dataset, gerçekleştirdikten sonra uygulama değişiklikleri bilerek bağımlı olduğu içinde herhangi bir işlem yapılmış olan kadar değişiklikler tamamlamayın.

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

AcceptChanges Yöntemi üç düzeyde kullanılabilir. Üzerindeki çağrı bir DataRow nesnesi, yalnızca söz konusu satır için değişiklikleri kaydeder. Üzerinde de çağırabilirsiniz bir DataTable tüm satırların bir tablo veya üzerinde tamamlamaya nesne DataSet beklemedeki tüm değişiklikleri DataSet'in tüm tablolardaki tüm kayıtların commit nesnesi.

Ne yönteminin üzerinden çağrıldığı nesne üzerinde göre hangi değişiklikler uygulanana 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ın üzerinde değişikliklerin yapıldığından

DataSet.AcceptChanges

DataSet'in tüm tablolardaki tüm satırlar üzerinde değişikliklerin yapıldığından

Not

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

İlgili bir yöntem 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ız veri için geçen işlemlerin gereksinimlerini karşıladığını doğrulamak için sık sık doğrulaması eklemeniz gerekir. Bu formda kullanıcının giriş doğru uygulamanız başka bir uygulama tarafından gönderilen verileri doğrulama veya veri sınırlamaları içinde kaynak ve uygulama gereksinimleri düştüğünde bile bileşeninizin bilgileri hesaplanan denetimi denetleme ilgili.

Verileri birkaç yolla doğrulayabilirsiniz:

  • Verileri doğrulamak için uygulamanızın kodu ekleyerek iş katmanında. Dataset, bunu yapmak için bir yerdir. DataSet nesnesinin bazı uç doğrulama avantajları sağlar — gibi sütun ve satır değerlerini değiştirme gibi değişiklikler doğrulama olanağı. Daha fazla bilgi için bkz. DataSet içindeki veri doğrulama.

  • Formlar için doğrulama ekleyerek sunum katmanı içinde. Daha fazla bilgi için bkz. Windows Forms'da kullanıcı giriş doğrulaması.

  • Veri kaynağına veri göndermek yoluyla veri arka plan, — örneğin, veritabanı — ve kabul etme veya reddetme verileri izin vererek. Veri doğrulama ve hata bilgisi sağlama olanakları gelişmiş bir veritabanıyla çalışıyorsanız, onu geldiği yeri ne olursa olsun verileri doğrulayabilir çünkü bu pratik bir yaklaşım olabilir. Ancak, bunu uygulamaya özgü doğrulama gereksinimlerine uyum değil. Buna ek olarak, veri doğrulama veri kaynağı sayısız başvurular nasıl arka uç tarafından geçirilen doğrulama hataları çözme uygulamanızı kolaylaştıran bağlı olarak veri kaynağına neden olabilir.

    Güvenlik NotuGüvenlik Notu

    Veri komutları ile kullanırken, bir CommandType özelliðini Text, dikkatle veritabanınıza geçirmeden önce bir istemciden gönderilen bilgileri kontrol edin.Kötü niyetli kullanıcılar göndermeyi deneyin (ekleme) değiştirilmiş veya ek sql deyimleri yetkisiz erişim elde etmek veya veritabanı zarar verecek bir çaba.Bir veritabanı için kullanıcı girişi transfer etmeden önce bilgilerin geçerli olduğunu her zaman doğrulamanız gerekir; her zaman parametreleştirilmiş sorguları ya da uygun olduğunda saklı yordamları kullanmak iyi bir uygulamadır.Daha fazla bilgi için bkz. Script Exploits Overview.

Dataset nesnesinde yapılan değişiklikleri sonra veri kaynağında yapılan değişiklikler iletebilir. En yaygın olarak çağırarak bunu Update yöntemi bir TableAdapter (ya da veri bağdaştırıcısı). Veri tablosundaki her kayıt yöntemi döngüleri belirler 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ılacağını örnek, bir tek 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 şöyle görünür:

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

Uygulamanızın "Tercih" Gamze Koç'ın durumunu değiştirir Değeri, bu değişikliğin sonucu olarak RowState ilgili satır özelliğini değiştirir Unchanged için Modified. Değeri RowState ilk satır özelliği 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, çağrı Update yöntemi, dataset veritabanına aktarmak için. Yöntem sırayla her satırı inceler. Özgün veritabanından getirilen çünkü o satırın değişmediği için ilk satırı yöntemi yok sql deyimi veritabanına iletir.

İkinci satır, Bununla birlikte, Update yöntemi, otomatik olarak uygun verileri komutu çalıştırır ve veritabanına iletir. sql deyimi belirli 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. Çünkü bir update deyimi kullanmak için bağdaştırıcı bilir değeri RowState özelliği Modified.

  • update deyimi hedef satır olduğunu belirten bir where yan tümcesi aktarılan sql deyimi içerir, CustomerID = 'c400'. Bu bölümü, select deyimi hedef satırdaki tüm diğerlerinden çünkü ayıran CustomerID hedef tablonun birincil anahtardır. where yan tümcesi kaydın özgün sürümünden türetilen bilgi (DataRowVersion.Original), satırı belirlemek için gereken değerler değiştirilmiş durumda.

  • Deitirilmi sütunlar yeni değerleri ayarlamak için set yan tümcesi, aktarılan sql deyimi içerir.

    Not

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

Kağıt geçirme Parametreler

Değer veritabanında güncelleştirilecek kayıtları için genellikle parametreler kullanılarak iletilir. 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 toplama işlemi için uygun veri komut — bu durumda, UpdateCommand TableAdapter nesnesi.

Data adapter oluşturmak için Visual Studio Araçları kullandıysanız, UpdateCommand nesne deyimindeki her parametre yer tutucusu karşılık parametreleri topluluğu içerir.

SqlParameter.SourceColumn Özelliği her parametrenin işaret eden bir sütun, veri tablosu. Örneğin, SourceColumn özelliği için au_id ve Original_au_id parametreleri Yazar Kimliği ne olursa olsun veri tablosundaki sütunu 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 değerleri ifadesine doldurur.

Bir update deyimi hem de yeni değerler (olanlar kayda yazılır) 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 parametreyi güncelleştirilmekte kaydından veri okuyabilir ancak bunlar parametresi 's temelinde sütun değeri farklı sürümlerini almak SqlParameter.SourceVersion özelliği. Geçerli sürüm set yan tümcesi için parametre alır ve parametre where yan tümcesi için özgün sürümü alır.

Not

De değerlerini ayarlayabilirsiniz Parameters koleksiyonu, genellikle veri bağdaştırıcı için bir olay işleyicisi içinde yapmayı tercih kodu kendiniz RowChanging olay.

İlişkili tabloları güncelleştirmek

Sizin DataSet'in birden çok tablo içeriyorsa, bunları tek tek çağırarak 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ştirmelerini göndermek zorunda kalacağı olasıdır. Ortak bir senaryo bir dataset nesnesine üst ve alt ilgili kayıtlar eklemiş olur — örneğin, yeni bir müşteri kaydı ve bir veya daha çok ilgili sipariş kayıtları. Veritabanı ilişkisel bütünlüğü kuralları zorlamayı, üst kaydı oluşturmadan önce yeni alt kayıtlar veritabanına gönderirseniz daha sonra onu hataları yükseltecektir.

DataSet nesnesinin ilişkili kayıtları silerseniz, Tam tersine, daha sonra genellikle güncelleştirmeleri ters sırada göndermek zorunda: alt tablo ilk olarak, daha sonra üst tablo. Aksi halde, veritabanının bilgi tutarlılığı kuralları ilgili alt kayıtlar varolmaya devam ederken bir üst kayıt silmeyi engeller çünkü bir hata yükseltmek olasıdır.

Bu sırada izlemesini ilişkili tablolar için güncelleştirmeleri göndermek için genel bir kural şöyledir:

  1. Alt tablo: kayıtları silme.

  2. Üst Tablo: ekleme, güncelleştirme ve kayıtlarını silmek.

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

  4. Daha fazla bilgi için bkz. İzlenecek yol: Bir veritabanı (birden çok tabloları) verilerini kaydetme.

Eşzamanlılık denetimi

Veri kaynağından DataSet kesildiği kilitleri veri kaynağındaki kayıtlar üzerinde tutun değildir. Bu nedenle, veritabanını güncelleştirmek isterseniz ve eşzamanlılık denetimi sürdürmek uygulama için önemli ise, dataset nesnesindeki kayıtları veritabanı ile birlikte karılatırmalısınız. Örneğin, veritabanındaki kayıtların son DataSet'i dolduran bu yana değişen bulabilirsiniz. Bu durumda, veritabanı kaydı veya sizin dataset içinde olan değiştirilmiş bir kaydı ile ne olmasý gerektiðini belirtmek için uygulama uygun mantık yürütmesi gerekiyor.

Ayrıca bkz.

Görevler

Nasıl yapılır: bir TableAdapter kullanarak veri güncelleştirme

Kavramlar

TableAdapter genel bakış

Uygulamanız veri almaya hazırlanıyor

Uygulama veri getiriliyor

Visual Studio veri denetimleri

Uygulamanızın veri düzenleme

Veri doğrulama

Verileri kaydetme

Diğer Kaynaklar

Visual Studio veri uygulamaları genel bakış

Visual Studio verilere bağlanma