Aracılığıyla paylaş


.NET Framework uygulamalarında veri kümelerini sorgulama

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 kümesindeki belirli kayıtları aramak için DataTable'daki yöntemini kullanınFindBy, 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.

Not

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 adlı bir tablo ve adlı Customers customersfarklı bir tablo 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 sütun, CustomerID tablonun birincil anahtarıdır Customers . 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

  • Find Birincil anahtarı parametre olarak geçirerek bir DataRowCollection koleksiyonun yöntemini çağırın.

    Aşağıdaki örnekte, adlı foundRow yeni bir satırın nasıl bildirilip yöntemin dönüş değerinin ataneceği gösterilmektedir Find . 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ı yöntemiyle Select oluşturulur ve yönteme Select geçirilen ifadeyi temel alan bir s dizisi DataRowdöndürü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 örnekte, belirli satırları bulmak için yönteminin nasıl kullanılacağı Select gösterilmektedir DataTable .

    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.

Üst tablodaki yöntemini DataRelation çağırarak GetChildRows ilgili kayıtları bulmak için bir DataRow nesnesi kullanabilirsiniz. Bu yöntem, ilgili alt kayıtların bir dizisini döndürür. Alternatif olarak, alt tabloda yöntemini DataRow çağırabilirsinizGetParentRow. Bu yöntem üst tablodan tek DataRow bir 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.

Not

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:

  • Adlı NorthwindDataSet bir veri kümesinin tabloyla bir Customers örneği.

  • Bir Orders tablo.

  • İki tabloyla ilişkili adlı FK_Orders_Customers ilişki.

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

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

  • GetChildRows Belirli Customers bir veri satırının yöntemini çağırın ve tablodan Orders bir satır dizisi döndürür:

    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 üst kaydını döndürmek için

  • GetParentRow Belirli Orders bir veri satırının yöntemini çağırın ve tablodan tek bir satır döndürinCustomers:

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