.NET Framework uygulamalarında veri kümelerini sorgulama

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.

Veri kümesindeki belirli kayıtları aramak için DataTable'daki yöntemini kullanın FindBy , tablonun Rows koleksiyonunda döngü yapmak için kendi foreach deyiminizi yazın veya LINQ to DataSet kullanın.

Veri kümesi büyük/küçük harf duyarlılığı

Bir veri kümesinde tablo ve sütun adları varsayılan olarak büyük/küçük harfe duyarlı değildir; diğer bir deyişle, "Müşteriler" adlı bir veri kümesindeki tabloya "Müşteriler" de denir. Bu, SQL Server dahil olmak üzere birçok veritabanındaki adlandırma kurallarıyla eşleşir. SQL Server'da varsayılan davranış, veri öğelerinin adlarının yalnızca büyük/küçük harfle ayırt edilememesidir.

Uyarı

Veri kümelerinden farklı olarak, XML belgeleri büyük/küçük harfe duyarlıdır, bu nedenle şemalarda tanımlanan veri öğelerinin adları büyük/küçük harfe duyarlıdır. Örneğin, şema protokolü, şemanın Customers adında bir tabloyu ve customers adlı farklı bir tabloyu tanımlamasına izin verir. Bu, veri kümesi sınıfı oluşturmak için yalnızca büyük/küçük harfe göre farklılık gösteren öğeler içeren bir şema kullanıldığında ad çakışmalarına neden olabilir.

Ancak büyük/küçük harf duyarlılığı, verilerin veri kümesi içinde yorumlanmasında bir faktör olabilir. Örneğin, bir veri kümesi tablosundaki verileri filtrelerseniz, karşılaştırmanın büyük/küçük harfe duyarlı olup olmadığına bağlı olarak arama ölçütleri farklı sonuçlar döndürebilir. Veri kümesinin CaseSensitive özelliğini ayarlayarak filtreleme, arama ve sıralamanın büyük/küçük harf duyarlılığını denetleyebilirsiniz. Veri kümesindeki tüm tablolar varsayılan olarak bu özelliğin değerini devralır. (Tablonun özelliğini ayarlayarak CaseSensitive her tablo için bu özelliği geçersiz kılabilirsiniz.)

Veri tablosunda belirli bir satırı bulma

Yazılan veri kümesinde birincil anahtar değerine sahip bir satır bulmak için

  • Bir satırı bulmak için tablonun birincil anahtarını kullanan kesin olarak belirlenmiş FindBy yöntemi çağırın.

    Aşağıdaki örnekte, CustomerID sütunu Customers tablosunun birincil anahtarıdır. Bu, oluşturulan FindBy yöntemin olduğu FindByCustomerIDanlamına gelir. Örnekte, oluşturulan FindBy yöntemi kullanarak bir değişkene belirli DataRow bir değişkenin nasıl atandığı gösterilmektedir.

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

Yazılmamış bir veri kümesinde birincil anahtar değerine sahip bir satır bulmak için

  • DataRowCollection koleksiyonunun Find yöntemini, birincil anahtarı parametre olarak ileterek çağırın.

    Aşağıdaki örnek, foundRow adlı yeni bir satırın nasıl bildirileceğini ve Find yönteminin dönüş değerinin ona nasıl atanacağını göstermektedir. Birincil anahtar bulunursa, sütun dizini 1'in içeriği bir ileti kutusunda görüntülenir.

    string s = "primaryKeyValue";
    DataRow foundRow = dataSet1.Tables["AnyTable"].Rows.Find(s);
    
    if (foundRow != null) 
    {
        MessageBox.Show(foundRow[0].ToString());
    }
    else
    {
        MessageBox.Show("A row with the primary key of " + s + " could not be found");
    }
    

Sütun değerlerine göre satırları bulma

Herhangi bir sütundaki değerleri temel alan satırları bulmak için

  • Veri tabloları, Select yöntemiyle oluşturulur ve Select yöntemine geçirilen ifadeye dayalı bir DataRow dizisi döndürülür. Geçerli ifadeler oluşturma hakkında daha fazla bilgi için, özellik hakkındaki Expression sayfanın "İfade Sözdizimi" bölümüne bakın.

    Aşağıdaki örnek, belirli satırları bulmak için Select yönteminin DataTable nasıl kullanılacağını göstermektedir.

    DataRow[] foundRows;
    foundRows = dataSet1.Tables["Customers"].Select("CompanyName Like 'A%'");
    

Bir veri kümesindeki tablolar ilişkili olduğunda, bir DataRelation nesne ilgili kayıtları başka bir tabloda kullanılabilir hale getirebilir. Örneğin, ve Orders tablolarını içeren Customers bir veri kümesi kullanılabilir hale getirilebilir.

DataRelation nesnesini kullanarak, üst tablodaki DataRow nesnesinin GetChildRows yöntemini çağırarak ilgili kayıtları bulabilirsiniz. Bu yöntem, bağlantılı alt kayıtların bir dizisini döndürür. Alternatif olarak, alt tablodaki bir DataRow'ın GetParentRow yöntemini çağırabilirsiniz. Bu yöntem üst tablodan tek bir DataRow döndürür.

Bu sayfa, yazılan veri kümelerini kullanan örnekler sağlar. Yazılmamış veri kümelerinde ilişkilerde gezinme hakkında bilgi için bkz. DataRelations'ta Gezinme.

Uyarı

Bir Windows Forms uygulamasında çalışıyor ve verileri görüntülemek için veri bağlama özelliklerini kullanıyorsanız tasarımcı tarafından oluşturulan form uygulamanız için yeterli işlevselliği sağlayabilir. Daha fazla bilgi için bkz . Visual Studio'da verilere denetim bağlama. Özellikle, bkz. Veri Kümelerindeki İlişkiler.

Aşağıdaki kod örnekleri, yazılan veri kümelerinde yukarı ve aşağı ilişkilerde gezinmeyi göstermektedir. Kod örnekleri, istenen satırı bulmak ve ilgili kayıtları döndürmek için yazılan DataRow(NorthwindDataSet.OrdersRow) ve oluşturulan FindByPrimaryKey (FindByCustomerID) yöntemlerini kullanır. Örnekler yalnızca aşağıdakilere sahipseniz doğru derlenip çalıştırılır:

  • NorthwindDataSet adlı veri kümesinin bir Customers tablosu örneği.

  • Bir Orders tablo.

  • İki tabloyu ilişkilendiren adı FK_Orders_Customers olan bir ilişki.

Ayrıca, döndürülecek kayıtlar için her iki tablonun da verilerle doldurulması gerekir.

Seçilen üst kaydın alt kayıtlarını geri döndürmek için

  • Belirli bir Customers veri satırının GetChildRows yöntemini çağırın ve Orders tablosundan satırların bir dizisini döndürün.

    string custID = "ALFKI";
    NorthwindDataSet.OrdersRow[] orders;
    
    orders = (NorthwindDataSet.OrdersRow[])northwindDataSet.Customers.
        FindByCustomerID(custID).GetChildRows("FK_Orders_Customers");
    
    MessageBox.Show(orders.Length.ToString());
    

Seçili alt kaydın ebeveyn kaydını geri döndürmek için

  • Belirli bir Orders veri satırının GetParentRow yöntemini çağırın ve Customers tablosundan tek bir satır döndürün.

    int orderID = 10707;
    NorthwindDataSet.CustomersRow customer;
    
    customer = (NorthwindDataSet.CustomersRow)northwindDataSet.Orders.
        FindByOrderID(orderID).GetParentRow("FK_Orders_Customers");
    
    MessageBox.Show(customer.CompanyName);