Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Setelah tingkat interoperabilitas dasar diketahui, fitur database yang digunakan oleh aplikasi harus dipertimbangkan. Misalnya, pernyataan SQL apa yang akan dijalankan aplikasi? Apakah aplikasi akan menggunakan kursor yang dapat digulir? Transaksi? Prosedur? Data panjang? Untuk ide tentang fitur apa yang mungkin tidak didukung oleh semua DBMS, lihat deskripsi fungsi SQLGetInfo, SQLSet Koneksi Attr, dan SQLSetStmtAttr, dan Lampiran C: Tata Bahasa SQL. Fitur yang diperlukan oleh aplikasi mungkin menghilangkan beberapa DBMS dari daftar DBMS target. Mereka mungkin juga menunjukkan bahwa aplikasi dapat dengan mudah menargetkan banyak DBMS.
Misalnya, jika fitur yang diperlukan sederhana, fitur tersebut biasanya dapat diimplementasikan dengan tingkat interoperabilitas yang tinggi. Aplikasi yang menjalankan pernyataan SELECT sederhana dan mengambil hasil dengan kursor forward-only cenderung sangat dapat dioperasikan berdasarkan kesederhanaannya: Hampir semua driver dan DBMS mendukung fungsionalitas yang dibutuhkannya.
Namun, jika fitur yang diperlukan lebih kompleks, seperti kursor yang dapat digulir, pernyataan pembaruan dan penghapusan yang diposisikan, dan prosedur, trade-off sering harus dilakukan. Ada beberapa kemungkinan:
Interoperabilitas yang lebih rendah, lebih banyak fitur. Aplikasi ini mencakup fitur tetapi hanya berfungsi dengan DBMS yang mendukungnya.
Interoperabilitas yang lebih tinggi, lebih sedikit fitur. Aplikasi menghilangkan fitur tetapi bekerja dengan lebih banyak DBMS.
Interoperabilitas yang lebih tinggi, fitur opsional. Aplikasi ini mencakup fitur tetapi membuatnya hanya tersedia dengan DBMS yang mendukungnya.
Interoperabilitas yang lebih tinggi, lebih banyak fitur. Aplikasi ini menggunakan fitur dengan DBMS yang mendukungnya dan menirunya untuk DBMS yang tidak.
Dua kasus pertama relatif sederhana untuk diimplementasikan, karena fitur digunakan baik dengan semua DBMS yang didukung atau tanpa ada. Dua kasus terakhir, di sisi lain, lebih kompleks. Diperlukan dalam kedua kasus untuk memeriksa apakah DBMS mendukung fitur dan dalam kasus terakhir untuk menulis kode dalam jumlah yang berpotensi besar untuk meniru fitur-fitur ini. Oleh karena itu, skema ini cenderung membutuhkan lebih banyak waktu pengembangan dan mungkin lebih lambat pada waktu proses.
Pertimbangkan aplikasi kueri generik yang dapat tersambung ke satu sumber data. Aplikasi menerima kueri dari pengguna dan menampilkan hasilnya di jendela. Sekarang misalkan aplikasi ini memiliki satu fitur yang memungkinkan pengguna untuk menampilkan hasil beberapa kueri secara bersamaan. Artinya, mereka dapat menjalankan kueri dan melihat beberapa hasil, menjalankan kueri yang berbeda dan melihat beberapa hasilnya, lalu kembali ke kueri pertama. Ini menyajikan masalah interoperabilitas karena beberapa driver hanya mendukung satu pernyataan aktif.
Aplikasi ini memiliki sejumlah pilihan, berdasarkan apa yang dikembalikan driver untuk opsi SQL_MAX_CONCURRENT_ACTIVITIES di SQLGetInfo:
Selalu dukung beberapa kueri. Setelah menyambungkan ke driver, aplikasi memeriksa jumlah pernyataan aktif. Jika driver hanya mendukung satu pernyataan aktif, aplikasi menutup koneksi dan memberi tahu pengguna bahwa driver tidak mendukung fungsionalitas yang diperlukan. Aplikasi ini mudah diimplementasikan dan memiliki fungsionalitas penuh tetapi memiliki interoperabilitas yang lebih rendah.
Jangan pernah mendukung beberapa kueri. Aplikasi menghilangkan fitur sama sekali. Mudah diimplementasikan dan memiliki interoperabilitas tinggi tetapi memiliki lebih sedikit fungsionalitas.
Mendukung beberapa kueri hanya jika driver melakukannya. Setelah menyambungkan ke driver, aplikasi memeriksa jumlah pernyataan aktif. Aplikasi ini memungkinkan pengguna untuk memulai pernyataan baru ketika sudah aktif hanya jika driver mendukung beberapa pernyataan aktif. Aplikasi ini memiliki fungsionalitas dan interoperabilitas yang lebih tinggi tetapi lebih sulit diterapkan.
Selalu dukung beberapa kueri dan tiru jika diperlukan. Setelah menyambungkan ke driver, aplikasi memeriksa jumlah pernyataan aktif. Aplikasi selalu memungkinkan pengguna untuk memulai pernyataan baru ketika sudah aktif. Jika driver hanya mendukung satu pernyataan aktif, aplikasi membuka koneksi tambahan ke driver tersebut dan menjalankan pernyataan baru pada koneksi tersebut. Aplikasi ini memiliki fungsionalitas penuh dan interoperabilitas tinggi tetapi lebih sulit diterapkan.