Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Nota
Kelas DataSet 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 adalah teknologi yang terbukti berhasil, pendekatan yang direkomendasikan untuk aplikasi .NET baru adalah 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.
Komponen TableAdapter mengisi himpunan data dengan data dari database, berdasarkan satu atau beberapa kueri atau prosedur tersimpan yang Anda tentukan. TableAdapters juga dapat melakukan penambahan, pembaruan, dan penghapusan pada database untuk mempertahankan perubahan yang Anda buat pada himpunan data. Selain itu, Anda dapat mengeluarkan perintah global yang tidak terkait dengan tabel tertentu.
Nota
Desainer Visual Studio menghasilkan TableAdapters. Jika Anda membuat himpunan data secara terprogram, gunakan kelas .NET DataAdapter
.
Untuk informasi terperinci tentang operasi TableAdapter, Anda dapat melompat langsung ke salah satu artikel berikut:
Artikel | Deskripsi |
---|---|
Membuat dan mengonfigurasi TableAdapters | Pelajari cara menggunakan perancang untuk membuat dan mengonfigurasi TableAdapters. |
Membuat kueri TableAdapter berparameter | Pelajari cara mengaktifkan pengguna untuk menyediakan argumen ke prosedur atau kueri TableAdapter. |
Langsung mengakses database dengan TableAdapter | Pelajari cara menggunakan metode DbDirect dari TableAdapters. |
Menonaktifkan batasan saat mengisi himpunan data | Pelajari cara bekerja dengan batasan kunci asing saat memperbarui data. |
Memperluas fungsionalitas dari sebuah TableAdapter | Pelajari cara menambahkan kode kustom ke TableAdapters. |
Membaca data XML ke dalam himpunan data | Pelajari cara bekerja dengan data XML dalam himpunan data. |
Gambaran umum TableAdapter
TableAdapters adalah komponen yang dihasilkan perancang yang tersambung ke database, menjalankan kueri atau prosedur tersimpan, dan mengisi DataTable mereka dengan data yang dikembalikan. TableAdapters juga mengirim data yang diperbarui dari aplikasi Anda kembali ke database. Anda dapat menjalankan kueri sebanyak yang Anda inginkan di TableAdapter selama mengembalikan data yang sesuai dengan skema tabel terkait. Diagram berikut menunjukkan bagaimana TableAdapters berinteraksi dengan database dan objek lain dalam memori:
Meskipun TableAdapters dirancang dengan Perancang Himpunan Data, kelas TableAdapter
tidak dihasilkan sebagai kelas berlapis DataSet. Sebaliknya, mereka terletak di namespace terpisah yang khusus untuk setiap himpunan data. Misalnya, jika Anda memiliki himpunan data bernama NorthwindDataSet
, TableAdapters yang terkait dengan objek DataTable di NorthwindDataSet
berada di namespace NorthwindDataSetTableAdapters
. Untuk mengakses TableAdapter tertentu secara terprogram, deklarasikan instans baru kelas TableAdapter
. Misalnya:
NorthwindDataSet northwindDataSet = new NorthwindDataSet();
NorthwindDataSetTableAdapters.CustomersTableAdapter customersTableAdapter =
new NorthwindDataSetTableAdapters.CustomersTableAdapter();
customersTableAdapter.Fill(northwindDataSet.Customers);
Skema DataTable yang Terkait
Saat membuat TableAdapter, Anda menggunakan kueri awal atau prosedur tersimpan untuk menentukan skema terkait DataTabledari TableAdapter. Anda menjalankan kueri awal atau prosedur tersimpan ini dengan memanggil metode Fill
TableAdapter, yang mengisi DataTableyang terkait dengan TableAdapter. Setiap perubahan yang Anda buat pada kueri utama TableAdapter tercermin dalam skema tabel data terkait. Misalnya, jika Anda menghapus kolom dari kueri utama, Perancang Himpunan Data juga menghapus kolom dari tabel data terkait. Jika ada kueri tambahan pada TableAdapter menggunakan pernyataan SQL yang mengembalikan kolom yang tidak ada dalam kueri utama, Perancang Himpunan Data mencoba menyinkronkan perubahan kolom antara kueri utama dan kueri tambahan.
Perintah pembaruan TableAdapter
Fungsionalitas pembaruan TableAdapter bergantung pada seberapa banyak informasi yang tersedia dalam kueri utama di TableAdapter Wizard. Misalnya, TableAdapters yang dikonfigurasi untuk mengambil nilai dari beberapa tabel (menggunakan JOIN
), nilai skalar, tampilan, atau hasil fungsi agregat awalnya tidak dibuat dengan kemampuan untuk mengirim pembaruan kembali ke database yang mendasarinya. Namun, Anda dapat mengonfigurasi properti InsertCommand, UpdateCommand, dan DeleteCommand secara manual di jendela Properti.
Kueri pada TableAdapter
TableAdapters dapat berisi beberapa kueri untuk mengisi tabel data terkait. Anda dapat menentukan kueri sebanyak mungkin untuk TableAdapter seperti yang diperlukan aplikasi Anda, selama setiap kueri mengembalikan data yang sesuai dengan skema yang sama dengan tabel data terkait. Kemampuan ini memungkinkan TableAdapter memuat hasil yang berbeda berdasarkan kriteria yang berbeda.
Misalnya, jika aplikasi Anda berisi tabel dengan nama pelanggan, Anda dapat membuat kueri yang mengisi tabel dengan setiap nama pelanggan yang dimulai dengan huruf tertentu. Anda bisa membuat kueri lain yang mengisi tabel dengan semua pelanggan yang berlokasi di negara bagian yang sama. Untuk mengisi tabel Customers
dengan pelanggan di negara bagian tertentu, buat kueri FillByState
yang mengambil parameter untuk nilai negara bagian sebagai berikut: SELECT * FROM Customers WHERE State = @State
. Jalankan kueri dengan memanggil metode FillByState
dan meneruskan nilai parameter, misalnya: CustomerTableAdapter.FillByState("WA")
.
Selain menambahkan kueri yang mengembalikan data dengan skema yang sama dengan tabel data TableAdapter, Anda dapat menambahkan kueri yang mengembalikan nilai skalar (tunggal). Misalnya, kueri yang mengembalikan jumlah pelanggan (SELECT Count(*) From Customers
) valid untuk CustomersTableAdapter
, meskipun data yang dikembalikan tidak sesuai dengan skema tabel.
Properti BersihkanSebelumMengisi
Secara default, setiap kali Anda menjalankan kueri untuk mengisi tabel data TableAdapter, data yang ada dibersihkan, dan hanya hasil kueri yang dimuat ke dalam tabel. Jika Anda ingin menambahkan atau menggabungkan data yang dikembalikan kueri ke data yang ada dalam tabel data, atur properti ClearBeforeFill
TableAdapter ke false
. Terlepas dari apakah Anda menghapus data, Anda harus secara eksplisit mengirim pembaruan kembali ke database jika Anda ingin mempertahankannya. Oleh karena itu, pastikan Anda menyimpan perubahan apa pun ke data dalam tabel sebelum Menjalankan kueri lain yang mengisi tabel. Untuk informasi selengkapnya, lihat Memperbarui data dengan menggunakan TableAdapter.
Pewarisan TableAdapter
TableAdapters memperluas fungsionalitas adaptor data standar dengan merangkum kelas DataAdapter yang dikonfigurasi. Secara default, TableAdapter mewarisi dari kelas Component dan tidak dapat ditransmisikan ke kelas DataAdapter. Mengubah tipe TableAdapter ke kelas DataAdapter menghasilkan kesalahan InvalidCastException. Untuk mengubah kelas dasar TableAdapter, tentukan kelas yang berasal dari kelas Component di properti Kelas Dasar TableAdapter di Perancang Himpunan Data.
Metode dan properti TableAdapter
Kelas TableAdapter
bukan jenis .NET, yang berarti Anda tidak dapat mencarinya di Browser Objek atau dokumentasi referensi. Visual Studio membuatnya pada waktu desain saat Anda menggunakan salah satu wizard yang dijelaskan sebelumnya. Nama yang ditetapkan Visual Studio ke TableAdapter yang Anda buat didasarkan pada nama tabel yang sedang Anda kerjakan. Misalnya, saat Anda membuat TableAdapter berdasarkan tabel dalam database bernama Orders
, TableAdapter diberi nama OrdersTableAdapter
. Untuk mengubah nama kelas TableAdapter, gunakan properti Nama di jendela Properti perancang himpunan data.
Metode dan properti tableAdapter yang umum digunakan adalah sebagai berikut:
Anggota | Deskripsi |
---|---|
TableAdapter.Fill |
Mengisi tabel data yang terkait dengan TableAdapter dengan hasil dari perintah SELECT TableAdapter. |
TableAdapter.Update |
Mengirim perubahan kembali ke database dan mengembalikan bilangan bulat yang mewakili jumlah baris yang terpengaruh oleh pembaruan. Untuk informasi selengkapnya, lihat Memperbarui data dengan menggunakan TableAdapter. |
TableAdapter.GetData |
Mengembalikan DataTable baru yang diisi dengan data. |
TableAdapter.Insert |
Membuat baris baru dalam tabel data. Untuk informasi selengkapnya, lihat Menyisipkan rekaman baru ke dalam database. |
TableAdapter.ClearBeforeFill |
Menentukan apakah tabel data dikosongkan sebelum Anda memanggil salah satu metode Fill . |
Metode pembaruan TableAdapter
TableAdapters menggunakan perintah data untuk membaca dan menulis dari database. Gunakan kueri Fill
awal TableAdapter (utama) sebagai dasar untuk membuat skema tabel data terkait, dan perintah InsertCommand
, UpdateCommand
, dan DeleteCommand
yang terkait dengan metode TableAdapter.Update
. Saat Anda memanggil metode Update
TableAdapter, metode ini menjalankan pernyataan yang dibuat ketika TableAdapter awalnya dikonfigurasi, dan bukan salah satu kueri tambahan yang Anda tambahkan dengan Wizard Konfigurasi Kueri TableAdapter .
Saat Anda menggunakan TableAdapter, ia melakukan operasi yang sama secara efektif seperti perintah yang biasanya dilakukan. Misalnya, saat Anda memanggil metode Fill
adaptor, adaptor menjalankan perintah data di properti SelectCommand
dan menggunakan pembaca data (misalnya, SqlDataReader) untuk memuat hasil yang diatur ke dalam tabel data. Demikian pula, ketika Anda memanggil metode Update
adaptor, itu menjalankan perintah yang sesuai (di properti UpdateCommand
, InsertCommand
, dan DeleteCommand
) untuk setiap rekaman yang diubah dalam tabel data.
Nota
Jika kueri utama berisi informasi yang cukup, perancang membuat perintah InsertCommand
, UpdateCommand
, dan DeleteCommand
secara default saat perancang menghasilkan TableAdapter. Namun, jika kueri utama TableAdapter lebih dari satu tabel SELECT
pernyataan, perancang mungkin tidak dapat menghasilkan perintah ini. Dalam kasus seperti itu, Anda mungkin menerima kesalahan saat menjalankan metode TableAdapter.Update
.
Metode GenerateDbDirect pada TableAdapter
Selain InsertCommand
, UpdateCommand
, dan DeleteCommand
, TableAdapters dibuat dengan metode berikut yang dapat Anda jalankan langsung terhadap database: TableAdapter.Insert
, TableAdapter.Update
, dan TableAdapter.Delete
. Anda dapat memanggil metode ini secara langsung untuk memanipulasi data dalam database. Melakukannya berarti Anda dapat memanggil metode individual ini dari kode Anda alih-alih memanggil TableAdapter.Update
untuk menangani sisipan, pembaruan, dan penghapusan yang tertunda untuk tabel data terkait.
Jika Anda tidak ingin membuat metode langsung ini, atur properti GenerateDbDirectMethods TableAdapter ke False di jendela Properti. Kueri tambahan yang ditambahkan ke TableAdapter adalah kueri mandiri, yang tidak menghasilkan metode ini.
Dukungan TableAdapter untuk tipe data nullable
TableAdapters mendukung jenis nullable Nullable<T>
dan T?
. Untuk informasi selengkapnya tentang tipe nilai yang dapat bernilai null di Visual Basic, lihat Tipe nilai yang dapat bernilai null (Visual Basic). Untuk informasi selengkapnya tentang tipe nullable di C#, lihat Tipe nilai nullable (C#).
Rujukan TableAdapterManager
Secara default, Visual Studio menghasilkan kelas TableAdapterManager
saat Anda membuat himpunan data yang berisi tabel terkait. Untuk mencegah kelas dihasilkan, ubah nilai properti Hierarchical Update
himpunan data menjadi false
. Saat Anda menyeret tabel yang memiliki hubungan ke permukaan desain halaman Formulir Windows atau WPF, Visual Studio mendeklarasikan variabel anggota kelas. Jika Anda tidak menggunakan pengikatan data, Anda harus mendeklarasikan variabel secara manual.
Karena kelas TableAdapterManager
bukan jenis .NET, kelas tersebut tidak muncul dalam dokumentasi referensi. Visual Studio membuatnya pada waktu desain sebagai bagian dari proses pembuatan himpunan data.
Tabel berikut ini mencantumkan metode dan properti yang sering digunakan dari kelas TableAdapterManager
:
Anggota | Deskripsi |
---|---|
metode UpdateAll |
Menyimpan semua data dari semua tabel data. |
properti BackUpDataSetBeforeUpdate |
Menentukan apakah akan membuat salinan cadangan himpunan data sebelum menjalankan TableAdapterManager.UpdateAll method.Boolean . |
namaTabelTableAdapter properti |
Mewakili TableAdapter. TableAdapterManager yang dihasilkan berisi properti untuk setiap TableAdapter yang dikelolanya. Misalnya, himpunan data dengan tabel Pelanggan dan Pesanan dihasilkan dengan TableAdapterManager yang berisi properti CustomersTableAdapter dan OrdersTableAdapter . |
properti UpdateOrder |
Mengontrol urutan perintah sisipkan, perbarui, dan hapus individual. Atur properti ini ke salah satu nilai dalam enumerasi TableAdapterManager.UpdateOrderOption .Secara default, UpdateOrder diatur ke InsertUpdateDelete , yang berarti bahwa menyisipkan, memperbarui, lalu menghapus dilakukan untuk semua tabel dalam himpunan data. |
Keamanan
Saat Anda menggunakan perintah data dengan properti CommandType
diatur ke Text, periksa informasi yang dikirim dari klien dengan cermat sebelum meneruskannya ke database Anda. Pengguna berbahaya mungkin mencoba mengirim (menyuntikkan) pernyataan SQL yang dimodifikasi atau tambahan untuk mendapatkan akses tidak sah ke database. Sebelum Anda mentransfer input pengguna ke database, selalu verifikasi bahwa informasi tersebut valid. Praktik terbaik adalah menggunakan kueri berparameter atau prosedur tersimpan jika memungkinkan.