Menjalankan Pernyataan Pembaruan dan Penghapusan yang Diposisikan

Penting

Fitur ini akan dihapus dalam versi Windows yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. Microsoft merekomendasikan penggunaan fungsionalitas kursor driver.

Setelah aplikasi mengambil blok data dengan SQLFetchScroll, aplikasi dapat memperbarui atau menghapus data di blok. Untuk menjalankan pembaruan atau penghapusan yang diposisikan, aplikasi:

  1. Memanggil SQLSetPos untuk menempatkan kursor pada baris yang akan diperbarui atau dihapus.

  2. Membuat pernyataan pembaruan atau penghapusan yang diposisikan dengan sintaks berikut:

    PERBARUInama tabel

    SETpengidentifikasi= kolom {expression | NULL}

    [,pengidentifikasi= kolom {expression | NULL}]

    WHERE CURRENT OFcursor-name

    HAPUS DARInamatabel DI MANA CURRENT OFcursor-name

    Cara term mudah untuk membuat klausul SET dalam pernyataan pembaruan yang diposisikan adalah dengan menggunakan penanda parameter untuk setiap kolom yang akan diperbarui dan menggunakan SQLBindParameter untuk mengikatnya ke buffer set baris agar baris diperbarui. Dalam hal ini, jenis data C parameter akan sama dengan jenis data C dari buffer set baris.

  3. Memperbarui buffer set baris untuk baris saat ini jika akan menjalankan pernyataan pembaruan yang diposisikan. Setelah berhasil menjalankan pernyataan pembaruan yang diposisikan, pustaka kursor menyalin nilai dari setiap kolom di baris saat ini ke cache-nya.

    Perhatian

    Jika aplikasi tidak memperbarui buffer set baris dengan benar sebelum menjalankan pernyataan pembaruan yang diposisikan, data dalam cache akan salah setelah pernyataan dijalankan.

  4. Menjalankan pernyataan pembaruan atau penghapusan yang diposisikan menggunakan pernyataan yang berbeda dari pernyataan yang terkait dengan kursor.

    Perhatian

    Klausa WHERE yang dibangun oleh pustaka kursor untuk mengidentifikasi baris saat ini dapat gagal mengidentifikasi baris apa pun, mengidentifikasi baris yang berbeda, atau mengidentifikasi lebih dari satu baris. Untuk informasi selengkapnya, lihat Membuat Pernyataan yang Dicari.

Semua pernyataan pembaruan dan penghapusan yang diposisikan memerlukan nama kursor. Untuk menentukan nama kursor, aplikasi memanggil SQLSetCursorName sebelum kursor dibuka. Untuk menggunakan nama kursor yang dihasilkan oleh driver, aplikasi memanggil SQLGetCursorName setelah kursor dibuka.

Setelah pustaka kursor menjalankan pernyataan pembaruan atau penghapusan yang diposisikan, array status, buffer set baris, dan cache yang dikelola oleh pustaka kursor berisi nilai yang diperlihatkan dalam tabel berikut.

Pernyataan yang digunakan Nilai dalam array status baris Nilai dalam

buffer set baris
Nilai dalam

buffer cache
Pembaruan yang diposisikan SQL_ROW_UPDATED Nilai baru[1] Nilai baru[1]
Penghapusan yang diposisikan SQL_ROW_DELETED Nilai lama Nilai lama

[1] Aplikasi harus memperbarui nilai dalam buffer set baris sebelum menjalankan pernyataan pembaruan yang diposisikan; setelah menjalankan pernyataan pembaruan yang diposisikan, pustaka kursor menyalin nilai dalam buffer set baris ke cache-nya.