Bagikan melalui


Transisi Status

ODBC mendefinisikan status diskrit untuk setiap lingkungan, setiap koneksi, dan setiap pernyataan. Misalnya, lingkungan memiliki tiga status yang mungkin: Tidak dialokasikan (di mana tidak ada lingkungan yang dialokasikan), Dialokasikan (di mana lingkungan dialokasikan tetapi tidak ada koneksi yang dialokasikan), dan Koneksi ion (di mana lingkungan dan satu atau beberapa koneksi dialokasikan). Koneksi memiliki tujuh kemungkinan status; pernyataan memiliki 13 kemungkinan status.

Item tertentu, seperti yang diidentifikasi oleh handelnya, berpindah dari satu status ke status lain ketika aplikasi memanggil fungsi atau fungsi tertentu dan meneruskan handel ke item tersebut. Gerakan seperti itu disebut transisi status. Misalnya, mengalokasikan handel lingkungan dengan SQLAllocHandle memindahkan lingkungan dari Tidak Dialokasikan ke Dialokasikan, dan membebaskan handel tersebut dengan SQLFreeHandle mengembalikannya dari Dialokasikan ke Tidak Dialokasikan. ODBC mendefinisikan sejumlah transisi status hukum terbatas, yang merupakan cara lain untuk mengatakan bahwa fungsi harus dipanggil dalam urutan tertentu.

Beberapa fungsi, seperti SQLGet Koneksi Attr, tidak memengaruhi status sama sekali. Fungsi lain memengaruhi status satu item. Misalnya, SQLDisconnect memindahkan koneksi dari status Koneksi ke status Dialokasikan. Terakhir, beberapa fungsi memengaruhi status lebih dari satu item. Misalnya, mengalokasikan handel koneksi dengan SQLAllocHandle memindahkan koneksi dari status Tidak Dialokasikan ke status Dialokasikan dan memindahkan lingkungan dari Dialokasikan ke status Koneksi ion.

Jika aplikasi memanggil fungsi tidak berurutan, fungsi mengembalikan kesalahan transisi status. Misalnya, jika lingkungan dalam status Koneksi ion dan aplikasi memanggil SQLFreeHandle dengan handel lingkungan tersebut, SQLFreeHandle mengembalikan SQLSTATE HY010 (Kesalahan urutan fungsi), karena hanya dapat dipanggil ketika lingkungan berada dalam status Dialokasikan. Dengan menentukan ini sebagai transisi status yang tidak valid, ODBC mencegah aplikasi membebaskan lingkungan saat ada koneksi aktif.

Beberapa transisi status melekat dalam desain ODBC. Misalnya, tidak dimungkinkan untuk mengalokasikan handel koneksi tanpa terlebih dahulu mengalokasikan handel lingkungan, karena fungsi yang mengalokasikan handel koneksi memerlukan handel lingkungan. Transisi status lainnya diberlakukan oleh Manajer Driver dan driver. Misalnya, SQLExecute menjalankan pernyataan yang disiapkan. Jika handel pernyataan yang diteruskan ke pernyataan tidak dalam status Disiapkan, SQLExecute mengembalikan SQLSTATE HY010 (Kesalahan urutan fungsi).

Dari sudut pandang aplikasi, transisi status biasanya mudah: Transisi status hukum cenderung berjalan beriringan dengan alur aplikasi yang ditulis dengan baik. Transisi status lebih kompleks untuk Driver Manager dan driver karena harus melacak status lingkungan, setiap koneksi, dan setiap pernyataan. Sebagian besar pekerjaan ini dilakukan oleh Driver Manager; sebagian besar pekerjaan yang harus dilakukan oleh driver terjadi dengan pernyataan dengan hasil yang tertunda.

Bagian 1 dan 2 dari manual ini ("Pengenalan ODBC" dan "Mengembangkan Aplikasi dan Driver") cenderung tidak secara eksplisit menyebutkan transisi status. Sebaliknya, mereka menjelaskan urutan di mana fungsi harus dipanggil. Misalnya, "Pernyataan Eksekusi" menyatakan bahwa pernyataan harus disiapkan dengan SQLPrepare sebelum dapat dijalankan dengan SQLExecute. Untuk deskripsi lengkap tentang status dan transisi status, termasuk transisi mana yang diperiksa oleh Manajer Driver dan yang harus diperiksa oleh driver, lihat Lampiran B: Tabel Transisi Status ODBC.