.NET Framework kullanarak veri kümelerindeki verileri düzenleme

Not

Veri kümeleri 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ümelerinin çok başarılı bir teknoloji olduğu kanıtlanmış olsa da, yeni .NET uygulamalarının Entity Framework Core kullanmasını öneririz. 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.

Veri tablolarındaki verileri, herhangi bir veritabanındaki bir tablodaki verileri düzenlediğiniz gibi düzenlersiniz. bu işlem tabloya kayıt ekleme, güncelleştirme ve silme işlemlerini içerebilir. Veriye bağlı bir formda, hangi alanların kullanıcı tarafından düzenlenebilir olduğunu belirtebilirsiniz. Bu gibi durumlarda, veri bağlama altyapısı değişiklikleri daha sonra veritabanına geri gönderebilmek için tüm değişiklik izlemeyi işler. Verilerde program aracılığıyla düzenlemeler yapıyorsanız ve bu değişiklikleri veritabanına geri göndermek istiyorsanız, değişiklik izlemeyi sizin için yapan nesneleri ve yöntemleri kullanmanız gerekir.

Gerçek verileri değiştirmeye ek olarak, belirli veri satırlarını döndürmek için sorgulayabilirsiniz DataTable . Örneğin, tek tek satırları, satırların belirli sürümlerini (özgün ve önerilen), değiştirilmiş satırları veya hataları olan satırları sorgulayabilirsiniz.

Veri kümesindeki satırları düzenlemek için

içinde DataTablevar olan bir satırı düzenlemek için, düzenlemek istediğiniz satırı bulmanız DataRow ve ardından güncelleştirilmiş değerleri istenen sütunlara atamanız gerekir.

Düzenlemek istediğiniz satırın dizinini bilmiyorsanız birincil anahtara FindBy göre arama yapmak için yöntemini kullanın:

NorthwindDataSet.CustomersRow customersRow = 
    northwindDataSet1.Customers.FindByCustomerID("ALFKI");

customersRow.CompanyName = "Updated Company Name";
customersRow.City = "Seattle";

Satır dizinini biliyorsanız, satırlara aşağıdaki gibi erişebilir ve bunları düzenleyebilirsiniz:

northwindDataSet1.Customers[4].CompanyName = "Updated Company Name";
northwindDataSet1.Customers[4].City = "Seattle";

Veri kümesine yeni satırlar eklemek için

Veriye bağlı denetimler kullanan uygulamalar genellikle BindingNavigator denetimindeki Yeni Ekle düğmesi aracılığıyla yeni kayıtlar ekler.

Veri kümesine el ile yeni kayıtlar eklemek için DataTable'da yöntemini çağırarak yeni bir veri satırı oluşturun. Ardından satırı öğesinin koleksiyonuna DataRow (Rows) DataTableekleyin:

NorthwindDataSet.CustomersRow newCustomersRow = 
    northwindDataSet1.Customers.NewCustomersRow();

newCustomersRow.CustomerID = "ALFKI";
newCustomersRow.CompanyName = "Alfreds Futterkiste";

northwindDataSet1.Customers.Rows.Add(newCustomersRow);

Veri kümesinin veri kaynağına güncelleştirme göndermesi için gereken bilgileri korumak için yöntemini kullanarak Delete veri tablosundaki satırları kaldırın. Örneğin, uygulamanız bir TableAdapter (veya DataAdapter) kullanıyorsa, TableAdapter'ın Update yöntemi veritabanında bir içeren RowState Deletedsatırları siler.

Uygulamanızın güncelleştirmeleri bir veri kaynağına geri göndermesi gerekmiyorsa, veri satırı koleksiyonuna (Remove ) doğrudan erişerek kayıtları kaldırmak mümkündür.

Veri tablosundan kayıtları silmek için

  • Delete yöntemini çağırınDataRow.

    Bu yöntem kaydı fiziksel olarak kaldırmaz. Bunun yerine, kaydı silinmek üzere işaretler.

    Not

    değerinin DataRowCollectioncount özelliğini alırsanız, sonuçta elde edilen sayı silinmek üzere işaretlenmiş kayıtları içerir. Silinmek üzere işaretlenmemiş kayıtların doğru sayısını almak için, her kaydın özelliğine RowState bakarak koleksiyonda döngü yapabilirsiniz. (Silinmek üzere işaretlenen kayıtlarda Deleted.RowState) Alternatif olarak, satır durumuna göre filtreleyen bir veri kümesinin veri görünümünü oluşturabilir ve count özelliğini buradan alabilirsiniz.

Aşağıdaki örnekte, tablodaki Delete ilk satırı silindi olarak işaretlemek için yönteminin nasıl çağrılacakları Customers gösterilmektedir:

northwindDataSet1.Customers.Rows[0].Delete();

Değiştirilen satırlar olup olmadığını belirleme

Bir veri kümesindeki kayıtlarda değişiklik yapıldığında, bu değişikliklerle ilgili bilgiler siz onları işleyene kadar depolanır. Değişiklikleri, bir veri kümesinin veya veri tablosunun AcceptChanges yöntemini çağırdığınızda ya da TableAdapter veya veri bağdaştırıcısının yöntemini çağırdığınızda Update işlersiniz.

Değişiklikler her veri satırında iki şekilde izlenir:

  • Her veri satırı ile RowState ilgili bilgiler içerir (örneğin, Added, Modified, Deletedveya Unchanged).

  • Değiştirilen her veri satırı, bu satırınDataRowVersion (), özgün sürümün (değişikliklerden önce) ve geçerli sürümün (değişikliklerden sonra) birden çok sürümünü içerir. Bir değişikliğin beklemede olduğu süre boyunca (olaya yanıt RowChanging verebildiğiniz zaman), üçüncü bir sürüm (önerilen sürüm) de kullanılabilir.

HasChanges Veri kümesi yöntemi, veri kümesinde değişiklik yapılmışsa döndürürtrue. Değiştirilen satırların mevcut olduğunu belirledikten sonra, değiştirilmiş bir DataSet satır kümesi döndürmek için veya DataTable yöntemini çağırabilirsinizGetChanges.

Herhangi bir satırda değişiklik yapılıp yapılmadığını belirlemek için

  • HasChanges Değiştirilen satırları denetlemek için veri kümesinin yöntemini çağırın.

Aşağıdaki örnekte, adlı NorthwindDataset1bir veri kümesinde değiştirilmiş satır olup olmadığını algılamak için yönteminden HasChanges dönüş değerinin nasıl denetleneceği gösterilmektedir:

if (northwindDataSet1.HasChanges()) 
{
    // Changed rows were detected, add appropriate code.
}
else
{
    // No changed rows were detected, add appropriate code.
}

Değişikliklerin türünü belirleme

Ayrıca, sabit listesi'nden DataRowState HasChanges yöntemine bir değer geçirerek veri kümesinde ne tür değişikliklerin yapıldığını da kontrol edebilirsiniz.

Satırda ne tür değişiklikler yapıldığını belirlemek için

Aşağıdaki örnekte, adlı NorthwindDataset1 bir veri kümesinin yeni satır eklenip eklenmediğini belirlemek için nasıl denetleneceği gösterilmektedir:

if (northwindDataSet1.HasChanges(DataRowState.Added)) 
{
    // New rows have been added to the dataset, add appropriate code.
}
else
{
    // No new rows have been added to the dataset, add appropriate code.
}

Hataları olan satırları bulmak için

Tek tek sütun ve veri satırlarıyla çalışırken hatalarla karşılaşabilirsiniz. bir , DataTableveya DataRowiçinde DataSethataların HasErrors olup olmadığını belirlemek için özelliğini de kontrol edebilirsiniz.

  1. Veri kümesinde HasErrors hata olup olmadığını görmek için özelliğini denetleyin.

  2. HasErrors özelliği isetrue, hata içeren satırı bulmak için tablo koleksiyonlarında ve ardından satırlar arasında yineleyin.

private void FindErrors() 
{
    if (dataSet1.HasErrors)
    {
        foreach (DataTable table in dataSet1.Tables)
        {
            if (table.HasErrors)
            {
                foreach (DataRow row in table.Rows)
                {
                    if (row.HasErrors)
                    {
                        // Process error here.
                    }
                }
            }
        }
    }
}