Bagikan melalui


Memperbarui Baris menurut Marka buku dengan SQLBulkOperations

Saat memperbarui baris menurut marka buku, SQLBulkOperations membuat sumber data memperbarui satu atau beberapa baris tabel. Baris diidentifikasi oleh marka buku di kolom marka buku terikat. Baris diperbarui menggunakan data dalam buffer aplikasi untuk setiap kolom terikat (kecuali ketika nilai dalam buffer panjang/indikator untuk kolom SQL_COLUMN_IGNORE). Kolom tidak terikat tidak akan diperbarui.

Untuk memperbarui baris menurut marka buku dengan SQLBulkOperations, aplikasi:

  1. Mengambil dan menyimpan marka buku dari semua baris yang akan diperbarui. Jika ada lebih dari satu marka buku dan pengikatan bijaksana kolom yang digunakan, marka buku disimpan dalam array; jika ada lebih dari satu bookmark dan pengikatan row-wise yang digunakan, bookmark disimpan dalam array struktur baris.

  2. Mengatur atribut pernyataan SQL_ATTR_ROW_ARRAY_SIZE ke jumlah bookmark dan mengikat buffer yang berisi nilai bookmark, atau array marka buku, ke kolom 0.

  3. Tempatkan nilai data baru di buffer set baris. Untuk informasi tentang cara mengirim data panjang dengan SQLBulkOperations, lihat Data Panjang dan SQLSetPos dan SQLBulkOperations.

  4. Mengatur nilai dalam buffer panjang/indikator setiap kolom seperlunya. Ini adalah panjang byte data atau SQL_NTS untuk kolom yang terikat ke buffer string, panjang byte data untuk kolom yang terikat ke buffer biner, dan SQL_NULL_DATA untuk kolom apa pun yang akan diatur ke NULL.

  5. Mengatur nilai dalam buffer panjang/indikator kolom yang tidak akan diperbarui ke SQL_COLUMN_IGNORE. Meskipun aplikasi dapat melewati langkah ini dan mengirim ulang data yang ada, ini tidak efisien dan berisiko mengirim nilai ke sumber data yang terpotong saat dibaca.

  6. Memanggil SQLBulkOperations dengan argumen Operasi diatur ke SQL_UPDATE_BY_BOOKMARK.

Untuk setiap baris yang dikirim ke sumber data sebagai pembaruan, buffer aplikasi harus memiliki data baris yang valid. Jika buffer aplikasi diisi dengan mengambil, jika array status baris telah dipertahankan, dan jika nilai status untuk baris SQL_ROW_DELETED, SQL_ROW_ERROR, atau SQL_ROW_NOROW, data yang tidak valid secara tidak sengaja dapat dikirim ke sumber data.