Bagikan melalui


Memperbarui Baris Data dengan Penanda menggunakan SQLBulkOperations

Ketika memperbarui baris menggunakan penanda, SQLBulkOperations memungkinkan sumber data untuk memperbarui satu atau lebih baris dalam tabel. Baris diidentifikasi oleh penanda di kolom penanda yang terikat. Baris diperbarui menggunakan data dalam buffer aplikasi untuk setiap kolom yang terikat (kecuali ketika nilai dalam buffer panjang/indikator untuk suatu kolom adalah SQL_COLUMN_IGNORE). Kolom tidak terikat tidak akan diperbarui.

Untuk memperbarui baris menggunakan penanda buku dengan SQLBulkOperations, aplikasi:

  1. Mengambil dan menyimpan penanda buku dari semua baris yang akan diperbarui. Jika ada lebih dari satu pembatas buku dan pengikatan secara kolom yang digunakan, pembatas buku disimpan dalam array; jika ada lebih dari satu pembatas buku dan pengikatan secara baris yang digunakan, pembatas buku disimpan dalam array struktur baris.

  2. Mengatur atribut pernyataan SQL_ATTR_ROW_ARRAY_SIZE pada jumlah penanda dan mengikat buffer yang berisi nilai penanda, atau array penanda, ke kolom 0.

  3. Menempatkan nilai data baru ke dalam buffer rowset. Untuk informasi tentang cara mengirim data panjang dengan SQLBulkOperations, lihat Data Panjang dan SQLSetPos dan SQLBulkOperations.

  4. Mengatur nilai dalam buffer panjang/penanda setiap kolom sesuai kebutuhan. Ini adalah panjang byte data atau SQL_NTS untuk kolom yang terikat pada buffer string, dan panjang byte data untuk kolom yang terikat pada buffer biner. Sementara itu, SQL_NULL_DATA digunakan untuk kolom apa pun yang akan diatur ke NULL.

  5. Menetapkan nilai dalam buffer panjang/indikator untuk kolom yang tidak perlu 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 argument Operation 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 melalui proses pengambilan, jika array status baris terpelihara, dan jika nilai status untuk baris adalah SQL_ROW_DELETED, SQL_ROW_ERROR, atau SQL_ROW_NOROW, data yang tidak valid dapat secara tidak sengaja dikirim ke sumber data.