Karakteristik Kursor dan Jenis Kursor

Aplikasi dapat menentukan karakteristik kursor alih-alih menentukan jenis kursor (forward-only, statis, keyset-driven, atau dinamis). Untuk melakukan ini, aplikasi memilih kemampuan gulir kursor (dengan mengatur atribut pernyataan SQL_ATTR_CURSOR_SCROLLABLE) dan sensitivitas (dengan mengatur atribut pernyataan SQL_ATTR_CURSOR_SENSITIVITY) sebelum membuka kursor pada handel pernyataan. Driver kemudian memilih jenis kursor yang paling efisien memberikan karakteristik yang diminta aplikasi.

Setiap kali aplikasi menetapkan salah satu atribut pernyataan SQL_ATTR_CONCURRENCY, SQL_ATTR_CURSOR_SCROLLABLE, SQL_ATTR_CURSOR_SENSITIVITY, atau SQL_ATTR_CURSOR_TYPE, driver melakukan perubahan yang diperlukan pada atribut pernyataan lain dalam set empat atribut ini sehingga nilainya tetap konsisten. Akibatnya, ketika aplikasi menentukan karakteristik kursor, driver dapat mengubah atribut yang menunjukkan jenis kursor berdasarkan pilihan implisit ini; ketika aplikasi menentukan jenis, driver dapat mengubah salah satu atribut lain agar konsisten dengan karakteristik jenis yang dipilih. Untuk informasi selengkapnya tentang atribut pernyataan ini, lihat deskripsi fungsi SQLSetStmtAttr .

Aplikasi yang menetapkan atribut pernyataan untuk menentukan jenis kursor dan karakteristik kursor menjalankan risiko mendapatkan kursor yang bukan metode paling efisien yang tersedia pada driver tersebut untuk memenuhi persyaratan aplikasi.

Pengaturan implisit atribut pernyataan ditentukan driver kecuali harus mengikuti aturan ini:

  • Kursor terusan saja tidak pernah dapat digulir; lihat definisi SQL_ATTR_CURSOR_SCROLLABLE di SQLSetStmtAttr.

  • Kursor yang tidak sensitif tidak pernah dapat diperbarui (dan dengan demikian konkurensinya bersifat baca-saja); ini didasarkan pada definisi kursor yang tidak sensitif dalam standar ISO SQL.

Akibatnya, pengaturan implisit atribut pernyataan terjadi dalam kasus yang dijelaskan dalam tabel berikut.

Atribut set aplikasi ke Atribut lain diatur secara implisit
SQL_ATTR_CONCURRENCY ke SQL_CONCUR_READ_ONLY SQL_ATTR_CURSOR_SENSITIVITY ke SQL_INSENSITIVE.
SQL_ATTR_CONCURRENCY SQL_CONCUR_LOCK, SQL_CONCUR_ROWVER, atau SQL_CONCUR_VALUES SQL_ATTR_CURSOR_SENSITIVITY ke SQL_UNSPECIFIED atau SQL_SENSITIVE, seperti yang didefinisikan oleh driver. Ini tidak pernah dapat diatur ke SQL_INSENSITIVE, karena kursor yang tidak sensitif selalu baca-saja.
SQL_ATTR_CURSOR_SCROLLABLE ke SQL_NONSCROLLABLE SQL_ATTR_CURSOR_TYPE ke SQL_CURSOR_FORWARD_ONLY
SQL_ATTR_CURSOR_SCROLLABLE ke SQL_SCROLLABLE SQL_ATTR_CURSOR_TYPE SQL_CURSOR_STATIC, SQL_CURSOR_KEYSET_DRIVEN, atau SQL_CURSOR_DYNAMIC, seperti yang ditentukan oleh driver. Ini tidak pernah diatur ke SQL_CURSOR_FORWARD_ONLY.
SQL_ATTR_CURSOR_SENSITIVITY ke SQL_INSENSITIVE SQL_ATTR_CONCURRENCY to SQL_CONCUR_READ_ONLY.

SQL_ATTR_CURSOR_TYPE to SQL_CURSOR_STATIC.
SQL_ATTR_CURSOR_SENSITIVITY ke SQL_SENSITIVE SQL_ATTR_CONCURRENCY SQL_CONCUR_LOCK, SQL_CONCUR_ROWVER, atau SQL_CONCUR_VALUES, seperti yang ditentukan oleh driver. Ini tidak pernah diatur ke SQL_CONCUR_READ_ONLY.

SQL_ATTR_CURSOR_TYPE SQL_CURSOR_FORWARD_ONLY, SQL_CURSOR_STATIC, SQL_CURSOR_KEYSET_DRIVEN, atau SQL_CURSOR_DYNAMIC, seperti yang ditentukan oleh driver.
SQL_ATTR_CURSOR_SENSITIVITY ke SQL_UNSPECIFIED SQL_ATTR_CONCURRENCY SQL_CONCUR_READ_ONLY, SQL_CONCUR_LOCK, SQL_CONCUR_ROWVER, atau SQL_CONCUR_VALUES, seperti yang ditentukan oleh driver.

SQL_ATTR_CURSOR_TYPE SQL_CURSOR_FORWARD_ONLY, SQL_CURSOR_STATIC, SQL_CURSOR_KEYSET_DRIVEN, atau SQL_CURSOR_DYNAMIC, seperti yang ditentukan oleh driver.
SQL_ATTR_CURSOR_TYPE ke SQL_CURSOR_DYNAMIC SQL_ATTR_SCROLLABLE to SQL_SCROLLABLE.

SQL_ATTR_CURSOR_SENSITIVITY ke SQL_SENSITIVE. (Tetapi hanya jika SQL_ATTR_CONCURRENCY tidak sama dengan SQL_CONCUR_READ_ONLY. Kursor dinamis yang dapat diperbarui selalu sensitif terhadap perubahan yang dilakukan dalam transaksi mereka sendiri.)
SQL_ATTR_CURSOR_TYPE ke SQL_CURSOR_FORWARD_ONLY SQL_ATTR_CURSOR_SCROLLABLE ke SQL_NONSCROLLABLE.
SQL_ATTR_CURSOR_TYPE ke SQL_CURSOR_KEYSET_DRIVEN SQL_ATTR_SCROLLABLE to SQL_SCROLLABLE.

SQL_ATTR_SENSITIVITY ke SQL_UNSPECIFIED atau SQL_SENSITIVE (sesuai dengan kriteria yang ditentukan driver, jika SQL_ATTR_CONCURRENCY tidak SQL_CONCUR_READ_ONLY).
SQL_ATTR_CURSOR_TYPE ke SQL_CURSOR_STATIC SQL_ATTR_SCROLLABLE to SQL_SCROLLABLE.

SQL_ATTR_SENSITIVITY ke SQL_INSENSITIVE (jika SQL_ATTR_CONCURRENCY SQL_CONCUR_READ_ONLY).

SQL_ATTR_SENSITIVITY SQL_UNSPECIFIED atau SQL_SENSITIVE (jika SQL_ATTR_CONCURRENCY tidak SQL_CONCUR_READ_ONLY).