Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uyarı
Sınıf DataSet ve ilgili sınıflar, uygulamaların veritabanıyla bağlantısı kesilirken uygulamaların bellekteki verilerle çalışmasını sağlayan 2000'lerin başlarındaki eski .NET Framework teknolojileridir. Teknolojiler özellikle kullanıcıların verileri değiştirmesine ve değişiklikleri veritabanında kalıcı hale getirebilmesine olanak tanıyan uygulamalar için kullanışlıdır. Veri kümeleri başarısı kanıtlanmış bir teknoloji olsa da, yeni .NET uygulamaları için önerilen yaklaşım Entity Framework Core kullanmaktır. Entity Framework, tablosal verilerle nesne modelleri olarak çalışmak için daha doğal bir yol sağlar ve daha basit bir programlama arabirimine sahiptir.
Verilerin doğrulanması, veri nesnelerine girilen değerlerin bir veri kümesinin şemasındaki kısıtlamalara uygun olduğunu onaylama işlemidir. Doğrulama işlemi, bu değerlerin uygulamanız için oluşturulan kurallara uyduğunu da onaylar. Temel alınan veritabanına güncelleştirme göndermeden önce verileri doğrulamak iyi bir uygulamadır. Bu, hataların yanı sıra bir uygulama ile veritabanı arasındaki olası gidiş dönüş sayısını azaltır.
Veri kümesinde doğrulama denetimleri oluşturarak veri kümesine yazılan verilerin geçerli olduğunu onaylayabilirsiniz. Veri kümesi, güncelleştirmenin nasıl gerçekleştirildiğine bakılmaksızın( doğrudan bir formdaki, bir bileşendeki veya başka bir şekilde denetimler tarafından) verileri denetleyebilir. Veri kümesi uygulamanızın bir parçası olduğundan (veritabanı arka uçlarından farklı olarak), uygulamaya özgü doğrulama oluşturmak için mantıksal bir yerdir.
Uygulamanıza doğrulama eklemek için en iyi yer veri kümesinin kısmi sınıf dosyasındadır. Visual Basic veya Visual C# içinde Veri Kümesi Tasarımcısı'nı açın ve doğrulama oluşturmak istediğiniz sütuna veya tabloya çift tıklayın. Bu eylem, bir veya RowChanging olay işleyicisi oluşturabileceğiniz ColumnChanging kod dosyasını açar.
Verileri doğrulama
Bir veri kümesindeki doğrulama aşağıdaki yollarla gerçekleştirilir:
Değişiklikler sırasında tek bir veri sütunundaki değerleri denetleyebilen, uygulamaya özgü kendi doğrulamanızı oluşturarak. Daha fazla bilgi için Nasıl yapılır: Sütun değişiklikleri sırasında verileri doğrulama bölümüne bakın.
Kendi uygulamaya özgü doğrulamanızı oluşturup, bir veri satırının tamamı değişirken verileri değerlere göre kontrol edebilirsiniz. Daha fazla bilgi için bkz . Nasıl yapılır: Satır değişiklikleri sırasında verileri doğrulama.
Veri kümesinin gerçek şema tanımının bir parçası olarak anahtarlar, benzersiz kısıtlamalar vb. oluşturarak.
Nesnenin DataColumn özelliklerini ayarlayarak, örneğin MaxLength, , AllowDBNullve Unique.
Kayıtta DataTable bir değişiklik gerçekleştiğinde nesne tarafından birkaç olay tetiklenir:
- ColumnChanging ve ColumnChanged olayları, tek bir sütunda yapılan her değişiklik sırasında oluşturulur ve sonrasında tetiklenir. Olay ColumnChanging , belirli sütunlardaki değişiklikleri doğrulamak istediğinizde kullanışlıdır. Önerilen değişiklik hakkındaki bilgiler, olayla birlikte bir bağımsız değişken olarak iletilir.
- RowChanging ve RowChanged olayları, bir satırdaki herhangi bir değişiklik sırasında ve sonrasında tetiklenir. Olay RowChanging daha geneldir. Bu, satırın herhangi bir yerinde bir değişiklik olduğunu gösterir, ancak hangi sütunun değiştiğini bilmezsiniz.
Varsayılan olarak, bir sütunda yapılan her değişiklik dört olay oluşturur. İlki, değiştirilen belirli bir sütun için ColumnChanging ve ColumnChanged olaylarıdır. Sıradaki RowChanging ve RowChanged olaylarıdır. Satırda birden çok değişiklik yapılıyorsa, her değişiklik için olaylar tetiklenir.
Uyarı
Veri satırının BeginEdit yöntemi, her bir sütun değişikliğinden sonra RowChanging ve RowChanged olaylarını devre dışı bırakır. Yani, EndEdit yöntemi çağrılana kadar olay tetiklenmez ve RowChanging ve RowChanged olayları sadece bir kez tetiklenir. Daha fazla bilgi için bkz. Veri kümesini doldururken kısıtlamaları kapatma.
Seçtiğiniz olay, doğrulamanın ne kadar ayrıntılı olmasını istediğinize bağlıdır. Bir sütun değiştiğinde hemen bir hatayı yakalamanız önemliyse, ColumnChanging olayını kullanarak doğrulama ekleyin. Aksi takdirde, aynı anda birkaç hata yakalamaya neden olabilecek RowChanging olayını kullanın. Ayrıca, verileriniz bir sütunun değerinin başka bir sütunun içeriğine göre doğrulanması için yapılandırılmışsa, doğrulamanızı olay sırasında gerçekleştirin RowChanging .
Kayıtlar güncelleştirildiğinde, DataTable nesne değişiklikler gerçekleşirken ve değişiklikler yapıldıktan sonra yanıt verebileceğiniz olayları tetikler.
Uygulamanız türü belirlenmiş bir veri kümesi kullanıyorsa, güçlü türlendirilmiş olay işleyicileri oluşturabilirsiniz. Bu, işleyicileri oluşturabileceğiniz dört ek türlenmiş olay ekler: dataTableNameRowChanging, dataTableNameRowChanged, dataTableNameRowDeleting ve dataTableNameRowDeleted. Bu türdeki olay işleyicileri, tablonuzun sütun adlarını içeren ve kod yazımını ve okunmasını kolaylaştıran bir argüman geçirir.
Veri güncelleştirme olayları
| Etkinlik | Açıklama |
|---|---|
| ColumnChanging | Bir sütundaki değer değiştiriliyor. Olay, önerilen yeni değerle birlikte satır ve sütunu size iletir. |
| ColumnChanged | Bir sütundaki değer değiştirildi. Olay, önerilen değerle birlikte satırı ve sütunu size iletir. |
| RowChanging | Bir DataRow nesnede yapılan değişiklikler veri kümesine geri işlenmek üzeredir. Eğer BeginEdit yöntemini çağırmadıysanız, ColumnChanging olay tetiklendikten hemen sonra bir sütundaki her değişiklik için RowChanging olayı tetiklenir. Değişiklik yapmadan önce BeginEdit çağırdıysanız RowChanging olayı ancak EndEdit yöntemini çağırdığınızda oluşturulur. Olay, satırı ve hangi eylem türünün (değişiklik, ekleme vb.) gerçekleştirildiğini belirten bir değeri size iletir. |
| RowChanged | Bir satır değiştirildi. Olay, hangi eylemin (değişiklik, ekleme vb.) gerçekleştirildiğini belirten bir değerle birlikte satırı size aktarır. |
| RowDeleting | Bir satır siliniyor. Olay, satırı size ve gerçekleştirilmekte olan eylem türünü (silme) belirten bir değer ile birlikte geçirir. |
| RowDeleted | Bir satır silindi. Olay, satırı size ve gerçekleştirilmekte olan eylem türünü (silme) belirten bir değer ile birlikte geçirir. |
ColumnChanging, RowChangingve RowDeleting olayları güncelleştirme işlemi sırasında oluşturulur. Verileri doğrulamak veya diğer işleme türlerini gerçekleştirmek için bu olayları kullanabilirsiniz. Bu olaylar sırasında güncelleştirme işlemi devam ettiğinden, güncelleştirmenin tamamlanmasını engelleyen bir özel durum oluşturarak bunu iptal edebilirsiniz.
ColumnChangedve RowChangedRowDeleted olayları, güncelleştirme başarıyla tamamlandığında tetiklenen bildirim olaylarıdır. Bu olaylar, başarılı bir güncelleştirmeye göre daha fazla işlem yapmak istediğinizde kullanışlıdır.
Sütun değişiklikleri sırasında verileri doğrulama
Uyarı
Veri Kümesi Tasarımcısı, doğrulama mantığının bir veri kümesine eklenebileceği kısmi bir sınıf oluşturur. Tasarımcı tarafından oluşturulan veri kümesi kısmi sınıftaki hiçbir kodu silmez veya değiştirmez.
Bir veri sütunundaki değer değiştiğinde olayı yanıtlayarak ColumnChanging verileri doğrulayabilirsiniz. Bu olay tetiklendiğinde, geçerli sütun için önerilen değeri içeren bir olay bağımsız değişkeni (ProposedValue) geçirir.
e.ProposedValue içeriğine dayanarak şunları yapabilirsiniz:
Hiçbir şey yapmadan önerilen değeri kabul edin.
Sütun değiştirme olay işleyicisinin içinden sütun hatasını (SetColumnError) ayarlayarak önerilen değeri reddedin.
İsteğe bağlı olarak, ErrorProvider kullanıcıya bir hata iletisi görüntülemek için bir denetim kullanın. Daha fazla bilgi için bkz . ErrorProvider bileşeni.
Doğrulama, olay sırasında RowChanging da gerçekleştirilebilir.
Satır değişiklikleri sırasında verileri doğrulama
Doğrulamak istediğiniz her sütunun uygulamanızın gereksinimlerini karşılayan veriler içerdiğini doğrulamak için kod yazabilirsiniz. Önerilen bir değer kabul edilemezse, sütunu hata içerdiğini gösterecek şekilde ayarlayarak bunu yapın. Aşağıdaki örneklerde sütun değeri 0 veya daha az olduğunda bir sütun hatası oluşur. Satır değiştirici olay işleyicileri aşağıdaki örneklere benzemelidir.
Satır değiştiğinde verileri doğrulamak için (Visual Basic)
veri kümenizi Veri Kümesi Tasarımcısıaçın. Daha fazla bilgi için bkz . İzlenecek Yol: Veri Kümesi Tasarımcısı'nda Veri Kümesi Oluşturma.
Doğrulamak istediğiniz tablonun başlık çubuğuna çift tıklayın. Bu eylem, veri kümesinin kısmi sınıf dosyasında RowChanging öğesinin DataTable olay işleyicisini otomatik olarak oluşturur.
Tavsiye
Satır değiştirme olay işleyicisini oluşturmak için tablo adının soluna çift tıklayın. Tablo adına çift tıklarsanız, tabloyu düzenleyebilirsiniz.
Private Sub Order_DetailsDataTable_Order_DetailsRowChanging( ByVal sender As System.Object, ByVal e As Order_DetailsRowChangeEvent ) Handles Me.Order_DetailsRowChanging If CType(e.Row.Quantity, Short) <= 0 Then e.Row.SetColumnError("Quantity", "Quantity must be greater than 0") Else e.Row.SetColumnError("Quantity", "") End If End Sub
Satır değiştiğinde verileri doğrulamak için (C#)
veri kümenizi Veri Kümesi Tasarımcısıaçın. Daha fazla bilgi için bkz . İzlenecek yol: Veri Kümesi Tasarımcısı'nda veri kümesi oluşturma.
Doğrulamak istediğiniz tablonun başlık çubuğuna çift tıklayın. Bu eylem, DataTable için bir kısmi sınıf dosyası oluşturur.
Uyarı
Veri Kümesi Tasarımcısı, olay için otomatik olarak bir olay işleyicisi RowChanging oluşturmaz. Olayı işlemek RowChanging için bir yöntem oluşturmanız ve tablonun başlatma yönteminde olayı bağlamak için kod çalıştırmanız gerekir.
Aşağıdaki kodu kısmi sınıfa kopyalayın:
public override void EndInit() { base.EndInit(); Order_DetailsRowChanging += TestRowChangeEvent; } public void TestRowChangeEvent(object sender, Order_DetailsRowChangeEvent e) { if ((short)e.Row.Quantity <= 0) { e.Row.SetColumnError("Quantity", "Quantity must be greater than 0"); } else { e.Row.SetColumnError("Quantity", ""); } }
Değiştirilen satırları almak için
Veri tablosundaki her satır, numaralandırmadaki değerleri DataRowState kullanarak bu satırın geçerli durumunu izleyen bir RowState özelliğe sahiptir. Verisetinden veya veri tablosundan değiştirilmiş satırları döndürmek için bir DataSet veya DataTableGetChanges yöntemini çağırabilirsiniz. Bir veri kümesinin yöntemini çağırarak HasChanges çağrısından GetChanges önce değişikliklerin mevcut olduğunu doğrulayabilirsiniz.
Uyarı
Veri kümesinde veya veri tablosundaki değişiklikleri işledikten sonra (yöntemini çağırarak AcceptChanges ), GetChanges yöntem veri döndürmez. Uygulamanızın değiştirilen satırları işlemesi gerekiyorsa, yöntemini çağırmadan AcceptChanges önce değişiklikleri işlemeniz gerekir.
Bir veri kümesinin GetChanges veya veri tablosunun yöntemini çağırmak, yalnızca değiştirilmiş kayıtları içeren yeni bir veri kümesi veya veri tablosu döndürür. Belirli kayıtları (örneğin, yalnızca yeni kayıtlar veya yalnızca değiştirilmiş kayıtlar) almak istiyorsanız, sabit listesindeki DataRowState bir değeri yönteme GetChanges parametre olarak geçirebilirsiniz.
Bir satırın DataRowVersion farklı sürümlerine (örneğin, işlemeden önce bir satırda yer alan özgün değerler) erişmek için numaralandırmayı kullanın.
Bir veri kümesinden tüm değiştirilmiş kayıtları almak için
Veri kümesinin GetChanges yöntemini çağırın.
Aşağıdaki örnek adlı
changedRecordsyeni bir veri kümesi oluşturur ve bu veri kümesini adlıdataSet1başka bir veri kümesinden değiştirilen tüm kayıtlarla doldurur.
Veri tablosundan değiştirilen tüm kayıtları almak için
GetChanges DataTable yöntemini çağırın.
Aşağıdaki örnek adlı
changedRecordsTableyeni bir veri tablosu oluşturur ve adlı başka bir veri tablosundandataTable1değiştirilen tüm kayıtlarla doldurur.
Belirli bir satır durumuna sahip tüm kayıtları almak için
Bir veri kümesinin veya veri tablosunun
GetChangesmetodunu çağırın ve bir DataRowState enum değerini argüman olarak geçirin.Aşağıdaki örnekte adlı
addedRecordsyeni bir veri kümesinin nasıl oluşturulacağı ve yalnızca veri kümesinedataSet1eklenmiş olan kayıtlarla nasıl doldurulacağı gösterilmektedir.Aşağıdaki örnekte, tabloya son eklenen tüm kayıtların nasıl döndürüleceği gösterilmektedir
Customers:
DataRow'un özgün sürümüne erişme
Veri satırlarında değişiklik yapıldığında, veri kümesi satırın hem özgün (Original) hem de yeni (Current) sürümlerini korur. Örneğin, yöntemini çağırmadan AcceptChanges önce uygulamanız kaydın farklı sürümlerine erişebilir (numaralandırmada DataRowVersion tanımlandığı gibi) ve değişiklikleri buna göre işleyebilir.
Uyarı
Satırın farklı sürümleri, yalnızca düzenlendikten sonra ve AcceptChanges yöntemi çağrılmadan önce bulunur.
AcceptChanges Yöntem çağrıldıktan sonra geçerli ve özgün sürümler aynıdır.
DataRowVersion Değeri sütun dizini (veya sütun adı dize olarak) ile birlikte geçirmek, söz konusu sütunun belirli satır sürümündeki değeri döndürür. Değiştirilen sütun, ColumnChanging ve ColumnChanged olayları sırasında tanımlanır. Doğrulama amacıyla farklı satır sürümlerini incelemek için iyi bir zaman. Ancak kısıtlamaları geçici olarak askıya aldıysanız bu olaylar tetiklenmez ve hangi sütunların değiştiğini program aracılığıyla belirlemeniz gerekir. Bunu yapmak için koleksiyonda Columns yineleme yapabilir ve farklı DataRowVersion değerleri karşılaştırabilirsiniz.
Kaydın orijinal sürümünü almak için
Döndürmek istediğiniz satırı geçirerek DataRowVersion sütunun değerine erişin.
Aşağıdaki örnekte, içindeki bir DataRowVersion alanın DataRowözgün değerini almak için bir
CompanyNamedeğerin nasıl kullanılacağı gösterilmektedir:
DataRow'un geçerli sürümüne erişme
Kaydın geçerli sürümünü almak için
Bir sütunun değerine erişin ve dizine bir satırın hangi sürümünü döndürmek istediğinizi belirten bir parametre ekleyin.
Aşağıdaki örnekte, içindeki bir DataRowVersion alanın DataRowgeçerli değerini almak için bir
CompanyNamedeğerin nasıl kullanılacağı gösterilmektedir: