Bagikan melalui


Parameter DataAdapter

Berlaku untuk: .NET Framework .NET .NET Standard

Mengunduh ADO.NET

DbDataAdapter memiliki empat properti yang digunakan untuk mengambil data dari dan memperbarui data ke sumber data: properti SelectCommand mengembalikan data dari sumber data; serta properti InsertCommand, UpdateCommand, dan DeleteCommand digunakan untuk mengelola perubahan di sumber data.

Catatan

Properti SelectCommand harus diatur sebelum Anda memanggil metode Fill dari DataAdapter. Properti InsertCommand, UpdateCommand, atau DeleteCommand harus diatur sebelum metode Update dari DataAdapter dipanggil, bergantung pada perubahan apa yang dibuat pada data di DataTable. Misalnya, jika baris telah ditambahkan, InsertCommand harus diatur sebelum Anda memanggil Update. Saat Update memproses baris yang disisipkan, diperbarui, atau dihapus, DataAdapter menggunakan masing-masing properti Command untuk memproses tindakan. Informasi terkini tentang baris yang dimodifikasi diteruskan ke objek Command melalui kumpulan Parameters.

Saat Anda memperbarui baris di sumber data, Anda memanggil pernyataan UPDATE, yang menggunakan pengidentifikasi unik untuk mengidentifikasi baris dalam tabel yang akan diperbarui. Pengidentifikasi unik biasanya nilai bidang kunci utama. Pernyataan UPDATE menggunakan parameter yang berisi pengidentifikasi unik dan kolom serta nilai yang akan diperbarui, seperti yang diperlihatkan dalam pernyataan Transact-SQL berikut.

UPDATE Customers SET CompanyName = @CompanyName
  WHERE CustomerID = @CustomerID  

Catatan

Sintaks untuk tempat penampung parameter bergantung pada sumber data. Contoh ini menunjukkan tempat penampung untuk sumber data SQL Server.

Dalam contoh ini, bidang diperbarui CompanyName dengan nilai @CompanyName parameter untuk baris yang CustomerID sama dengan nilai @CustomerID parameter. Parameter mengambil informasi dari baris yang dimodifikasi menggunakan properti SourceColumn dari objek SqlParameter. Berikut ini adalah parameter untuk contoh pernyataan UPDATE sebelumnya. Kode mengasumsikan bahwa variabel adapter mewakili objek SqlDataAdapter yang valid.

// Assumes that connection is a valid SqlAdapter object
adapter.UpdateCommand.Parameters.Add("@CompanyName", 
            SqlDbType.VarChar, 15, "CompanyName");
SqlParameter parameter = adapter.UpdateCommand.Parameters.Add("@CustomerID",
            SqlDbType.Char, 5, "CustomerID");
parameter.SourceVersion = DataRowVersion.Original;

Metode Add dari kumpulan Parameters mengambil nama parameter, jenis data, ukuran (jika berlaku untuk jenis), dan nama SourceColumn dari DataTable. Perhatikan bahwa SourceVersion dari parameter @CustomerID diatur ke Original. Pengaturan ini menjamin bahwa baris yang ada di sumber data diperbarui jika nilai kolom atau kolom pengidentifikasi telah diubah di DataRow yang dimodifikasi. Dalam hal ini, nilai baris Original akan cocok dengan nilai saat ini di sumber data, dan nilai baris Current akan berisi nilai yang diperbarui. SourceVersion untuk parameter @CompanyName tidak diatur dan menggunakan nilai baris Current default.

Catatan

Fill Untuk operasi DataAdapter dan Get metode DataReader, jenis .NET disimpulkan dari jenis yang dikembalikan dari Penyedia Data Microsoft SqlClient untuk SQL Server. Jenis .NET yang disimpulkan dan metode aksesor untuk jenis data Microsoft SQL Server dijelaskan dalam Pemetaan Tipe Data di ADO.NET.

Parameter.SourceColumn, Parameter.SourceVersion

SourceColumn dan SourceVersion dapat diteruskan sebagai argumen ke konstruktor Parameter, atau ditetapkan sebagai properti dari Parameter yang ada. SourceColumn adalah nama DataColumn dari DataRow tempat nilai Parameter akan diambil. SourceVersion menentukan versi DataRow yang digunakan DataAdapter untuk mengambil nilai.

Tabel berikut menunjukkan DataRowVersion nilai enumerasi yang tersedia untuk digunakan dengan SourceVersion.

Enumerasi DataRowVersion Deskripsi
Current Parameter menggunakan nilai kolom saat ini. Ini adalah default.
Default Parameter menggunakan DefaultValue kolom.
Original Parameter menggunakan nilai asli kolom.
Proposed Parameter menggunakan nilai yang diusulkan.

Contoh kode SqlClient di bagian berikutnya mendefinisikan parameter untuk UpdateCommand di mana kolom CustomerID digunakan sebagai SourceColumn untuk dua parameter: @CustomerID (SET CustomerID = @CustomerID), dan @OldCustomerID (WHERE CustomerID = @OldCustomerID). Parameter @CustomerID digunakan untuk memperbarui kolom CustomerID ke nilai saat ini di DataRow. Akibatnya, CustomerID SourceColumn dengan SourceVersion yang digunakan Current . Parameter @OldCustomerID digunakan untuk mengidentifikasi baris saat ini di sumber data. Karena nilai kolom yang cocok ditemukan dalam versi Original dari baris, SourceColumn (CustomerID) yang sama dengan SourceVersion dari Original digunakan.

Bekerja dengan parameter SqlClient

Contoh berikut menunjukkan cara membuat SqlDataAdapter dan mengatur MissingSchemaAction ke AddWithKey untuk mengambil informasi skema tambahan dari database. Kumpulan properti SelectCommand, InsertCommand, UpdateCommand, serta DeleteCommand dan objek SqlParameter yang sesuai ditambahkan ke kumpulan Parameters. Metode mengembalikan objek SqlDataAdapter.

public static SqlDataAdapter CreateSqlDataAdapter(SqlConnection connection)
{
    // Assumes that connection is a valid SqlConnection object
    SqlDataAdapter adapter = new SqlDataAdapter();
    adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;

    // Create the commands.
    adapter.SelectCommand = new SqlCommand(
        "SELECT CustomerID, CompanyName FROM CUSTOMERS", connection);
    adapter.InsertCommand = new SqlCommand(
        "INSERT INTO Customers (CustomerID, CompanyName) " +
        "VALUES (@CustomerID, @CompanyName)", connection);
    adapter.UpdateCommand = new SqlCommand(
        "UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " +
        "WHERE CustomerID = @oldCustomerID", connection);
    adapter.DeleteCommand = new SqlCommand(
        "DELETE FROM Customers WHERE CustomerID = @CustomerID", connection);

    // Create the parameters.
    adapter.InsertCommand.Parameters.Add("@CustomerID",
        SqlDbType.Char, 5, "CustomerID");
    adapter.InsertCommand.Parameters.Add("@CompanyName",
        SqlDbType.VarChar, 40, "CompanyName");

    adapter.UpdateCommand.Parameters.Add("@CustomerID",
        SqlDbType.Char, 5, "CustomerID");
    adapter.UpdateCommand.Parameters.Add("@CompanyName",
        SqlDbType.VarChar, 40, "CompanyName");
    adapter.UpdateCommand.Parameters.Add("@oldCustomerID",
        SqlDbType.Char, 5, "CustomerID").SourceVersion =
        DataRowVersion.Original;

    adapter.DeleteCommand.Parameters.Add("@CustomerID",
        SqlDbType.Char, 5, "CustomerID").SourceVersion =
        DataRowVersion.Original;

    return adapter;
}

Lihat juga