Bagikan melalui


Mengkueri himpunan data dalam aplikasi .NET Framework

Catatan

Himpunan data dan kelas terkait adalah teknologi .NET Framework warisan dari awal 2000-an yang memungkinkan aplikasi untuk bekerja dengan data dalam memori saat aplikasi terputus dari database. Teknologi ini sangat berguna untuk aplikasi yang memungkinkan pengguna memodifikasi data dan mempertahankan perubahan kembali ke database. Meskipun himpunan data telah terbukti menjadi teknologi yang sangat sukses, sebaiknya aplikasi .NET baru menggunakan Entity Framework Core. Entity Framework menyediakan cara yang lebih alami untuk bekerja dengan data tabular sebagai model objek, dan memiliki antarmuka pemrograman yang lebih sederhana.

Untuk mencari rekaman tertentu dalam himpunan data, gunakan FindBy metode pada DataTable, tulis pernyataan foreach Anda sendiri untuk mengulangi koleksi Baris tabel, atau gunakan LINQ ke Himpunan Data.

Sensitivitas kasus himpunan data

Dalam himpunan data, nama tabel dan kolom tidak peka huruf besar/kecil secara default — yaitu, tabel dalam himpunan data yang disebut "Pelanggan" juga dapat disebut sebagai "Pelanggan." Ini cocok dengan konvensi penamaan di banyak database, termasuk SQL Server. Di SQL Server, perilaku default adalah bahwa nama elemen data tidak dapat dibedakan hanya berdasarkan kasus.

Catatan

Tidak seperti himpunan data, dokumen XML peka huruf besar/kecil, sehingga nama elemen data yang ditentukan dalam skema peka huruf besar/kecil. Misalnya, protokol skema memungkinkan skema untuk menentukan tabel yang disebut Customers dan tabel lain yang disebut customers. Ini dapat mengakibatkan tabrakan nama ketika skema yang berisi elemen yang berbeda hanya menurut kasus digunakan untuk menghasilkan kelas himpunan data.

Namun, sensitivitas kasus dapat menjadi faktor dalam bagaimana data ditafsirkan dalam himpunan data. Misalnya, jika Anda memfilter data dalam tabel himpunan data, kriteria pencarian mungkin mengembalikan hasil yang berbeda tergantung pada apakah perbandingan peka huruf besar/kecil. Anda dapat mengontrol sensitivitas kasus pemfilteran, pencarian, dan pengurutan dengan mengatur properti himpunan CaseSensitive data. Semua tabel dalam himpunan data mewarisi nilai properti ini secara default. (Anda dapat mengambil alih properti ini untuk setiap tabel individual dengan mengatur properti tabel CaseSensitive .)

Menemukan baris tertentu dalam tabel data

Untuk menemukan baris dalam himpunan data yang ditik dengan nilai kunci utama

  • Untuk menemukan baris, panggil metode yang ditik FindBy dengan kuat yang menggunakan kunci utama tabel.

    Dalam contoh berikut, CustomerID kolom adalah kunci Customers utama tabel. Ini berarti bahwa metode yang dihasilkan FindBy adalah FindByCustomerID. Contoh menunjukkan cara menetapkan khusus DataRow untuk variabel dengan menggunakan metode yang dihasilkan FindBy .

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

Untuk menemukan baris dalam himpunan data yang tidak dititik dengan nilai kunci utama

  • Find Panggil metode DataRowCollection koleksi, meneruskan kunci primer sebagai parameter.

    Contoh berikut menunjukkan cara mendeklarasikan baris baru yang disebut foundRow dan menetapkannya nilai Find pengembalian metode. Jika kunci utama ditemukan, konten indeks kolom 1 ditampilkan dalam kotak pesan.

    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");
    }
    

Menemukan baris menurut nilai kolom

Untuk menemukan baris berdasarkan nilai di kolom apa pun

  • Tabel data dibuat dengan Select metode , yang mengembalikan array DataRowberdasarkan ekspresi yang diteruskan ke Select metode . Untuk informasi selengkapnya tentang membuat ekspresi yang valid, lihat bagian "Sintaks Ekspresi" dari halaman tentang Expression properti .

    Contoh berikut menunjukkan cara menggunakan Select metode DataTable untuk menemukan baris tertentu.

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

Saat tabel dalam himpunan data terkait, DataRelation objek dapat membuat rekaman terkait tersedia di tabel lain. Misalnya, himpunan data yang berisi Customers dan Orders tabel dapat disediakan.

Anda dapat menggunakan DataRelation objek untuk menemukan rekaman terkait dengan memanggil GetChildRows metode DataRow dalam tabel induk. Metode ini mengembalikan array rekaman anak terkait. Atau, Anda dapat memanggil GetParentRow metode DataRow di tabel anak. Metode ini mengembalikan satu DataRow dari tabel induk.

Halaman ini menyediakan contoh menggunakan himpunan data yang ditik. Untuk informasi tentang menavigasi hubungan dalam himpunan data yang tidak dititik, lihat Menavigasi DataRelations.

Catatan

Jika Anda bekerja dalam aplikasi Formulir Windows dan menggunakan fitur pengikatan data untuk menampilkan data, formulir yang dihasilkan desainer mungkin menyediakan fungsionalitas yang cukup untuk aplikasi Anda. Untuk mendapatkan informasi selengkapnya, lihat Mengikat kontrol ke data di Visual Studio. Secara khusus, lihat Hubungan dalam Himpunan Data.

Contoh kode berikut menunjukkan cara menavigasi hubungan naik dan turun dalam himpunan data yang diketik. Contoh kode menggunakan metode FindByPrimaryKey (FindByCustomerIDNorthwindDataSet.OrdersRow) yang dihasilkan DataRowuntuk menemukan baris yang diinginkan dan mengembalikan rekaman terkait. Contoh mengkompilasi dan menjalankan dengan benar hanya jika Anda memiliki:

  • Instans himpunan data bernama NorthwindDataSet dengan Customers tabel.

  • Sebuah Orders tabel.

  • Hubungan bernama FK_Orders_Customers yang berkaitan dengan dua tabel.

Selain itu, kedua tabel perlu diisi dengan data agar rekaman apa pun dikembalikan.

Untuk mengembalikan rekaman turunan dari rekaman induk yang dipilih

  • GetChildRows Panggil metode baris data tertentuCustomers, dan kembalikan array baris dari Orders tabel:

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

Untuk mengembalikan rekaman induk rekaman anak terpilih

  • GetParentRow Panggil metode baris data tertentuOrders, dan kembalikan satu baris dari Customers tabel:

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