Fungsi SQLDisconnect
Kesesuaian
Versi diperkenalkan: Kepatuhan Standar ODBC 1.0: ISO 92
Ringkasan
SQLDisconnect menutup koneksi yang terkait dengan handel koneksi tertentu.
Sintaks
SQLRETURN SQLDisconnect(
SQLHDBC ConnectionHandle);
Argumen
ConnectionHandle
[Input] Handel koneksi.
Kembali
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE, atau SQL_STILL_EXECUTING.
Diagnostik
Ketika SQLDisconnect mengembalikan SQL_ERROR atau SQL_SUCCESS_WITH_INFO, nilai SQLSTATE terkait dapat diperoleh dengan memanggil SQLGetDiagRec dengan HandleType SQL_HANDLE_DBC dan Handle of ConnectionHandle. Tabel berikut mencantumkan nilai SQLSTATE yang umumnya dikembalikan oleh SQLDisconnect dan menjelaskan masing-masing dalam konteks fungsi ini; notasi "(DM)" mendahului deskripsi SQLSTATEs yang dikembalikan oleh Driver Manager. Kode pengembalian yang terkait dengan setiap nilai SQLSTATE SQL_ERROR, kecuali disebutkan sebaliknya.
SQLSTATE | Kesalahan | Deskripsi |
---|---|---|
01000 | Peringatan umum | Pesan informasi khusus driver. (Fungsi mengembalikan SQL_SUCCESS_WITH_INFO.) |
01002 | Kesalahan pemutusan sambungan | Terjadi kesalahan selama pemutusan sambungan. Namun, pemutusan sambungan berhasil. (Fungsi mengembalikan SQL_SUCCESS_WITH_INFO.) |
08003 | Koneksi tidak terbuka | (DM) Koneksi yang ditentukan dalam argumen ConnectionHandle tidak terbuka. |
25000 | Status transaksi tidak valid | Ada transaksi dalam proses pada koneksi yang ditentukan oleh argumen ConnectionHandle. Transaksi tetap aktif. |
HY000 | Kesalahan umum | Terjadi kesalahan yang tidak ada SQLSTATE tertentu dan tidak ada SQLSTATE khusus implementasi yang ditentukan. Pesan kesalahan yang dikembalikan oleh SQLGetDiagRec di buffer *MessageText menjelaskan kesalahan dan penyebabnya. |
HY001 | Kesalahan alokasi memori | Driver tidak dapat mengalokasikan memori yang diperlukan untuk mendukung eksekusi atau penyelesaian fungsi. |
HY008 | Operasi dibatalkan | Pemrosesan asinkron diaktifkan untuk ConnectionHandle. Fungsi ini dipanggil, dan sebelum disembunyikan menjalankan Fungsi SQLCancelHandle dipanggil pada ConnectionHandle. Kemudian fungsi dipanggil lagi pada ConnectionHandle. Fungsi ini dipanggil, dan sebelum selesai menjalankan SQLCancelHandle dipanggil pada ConnectionHandle dari utas yang berbeda dalam aplikasi multithread. |
HY010 | Kesalahan urutan fungsi | (DM) Fungsi eksekusi asinkron dipanggil untuk StatementHandle yang terkait dengan ConnectionHandle dan masih dijalankan ketika SQLDisconnect dipanggil. (DM) Fungsi eksekusi asinkron (bukan yang ini) dipanggil untuk ConnectionHandle dan masih dijalankan ketika fungsi ini dipanggil. (DM) SQLExecute, SQLExecDirect, SQLBulkOperations, atau SQLSetPos dipanggil untuk StatementHandle yang terkait dengan ConnectionHandle dan SQL_NEED_DATA yang dikembalikan. Fungsi ini dipanggil sebelum data dikirim untuk semua parameter atau kolom data-at-execution. |
HY013 | Kesalahan manajemen memori | Panggilan fungsi tidak dapat diproses karena objek memori yang mendasar tidak dapat diakses, mungkin karena kondisi memori yang rendah. |
HY117 | Koneksi ditangguhkan karena status transaksi yang tidak diketahui. Hanya fungsi putuskan sambungan dan baca-saja yang diizinkan. | (DM) Untuk informasi selengkapnya tentang status ditangguhkan, lihat Fungsi SQLEndTran. |
HYT01 | Kesalahan waktu habis koneksi kedaluwarsa | Periode batas waktu koneksi kedaluwarsa sebelum sumber data merespons permintaan, dan koneksi masih aktif. Periode batas waktu koneksi diatur melalui SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT. |
IM001 | Driver tidak mendukung fungsi ini | (DM) Driver yang terkait dengan ConnectionHandle tidak mendukung fungsi. |
IM017 | Polling dinonaktifkan dalam mode pemberitahuan asinkron | Setiap kali model pemberitahuan digunakan, polling dinonaktifkan. |
IM018 | SQLCompleteAsync belum dipanggil untuk menyelesaikan operasi asinkron sebelumnya pada handel ini. | Jika panggilan fungsi sebelumnya pada handel mengembalikan SQL_STILL_EXECUTING dan jika mode pemberitahuan diaktifkan, SQLCompleteAsync harus dipanggil pada handel untuk melakukan pasca-pemrosesan dan menyelesaikan operasi. |
Komentar
Jika aplikasi memanggil SQLDisconnect setelah SQLBrowseConnect kembali SQL_NEED_DATA dan sebelum mengembalikan kode pengembalian yang berbeda, driver membatalkan proses penjelajahan koneksi dan mengembalikan koneksi ke status tidak tersambung.
Jika aplikasi memanggil SQLDisconnect saat ada transaksi yang tidak lengkap yang terkait dengan handel koneksi, driver mengembalikan SQLSTATE 25000 (Status transaksi tidak valid), menunjukkan bahwa transaksi tidak berubah dan koneksi terbuka. Transaksi yang tidak lengkap adalah transaksi yang belum diterapkan atau digulung balik dengan SQLEndTran.
Jika aplikasi memanggil SQLDisconnect sebelum membebaskan semua pernyataan yang terkait dengan koneksi, driver, setelah berhasil terputus dari sumber data, membebaskan pernyataan tersebut dan semua deskriptor yang telah dialokasikan secara eksplisit pada koneksi. Namun, jika satu atau beberapa pernyataan yang terkait dengan koneksi masih dijalankan secara asinkron, SQLDisconnect mengembalikan SQL_ERROR dengan nilai SQLSTATE HY010 (Kesalahan urutan fungsi). Selain itu, SQLDisconnect akan membebaskan semua pernyataan terkait dan semua deskriptor yang telah dialokasikan secara eksplisit pada koneksi, jika koneksi dalam status ditangguhkan atau jika SQLDisconnect berhasil dibatalkan oleh SQLCancelHandle.
Untuk informasi tentang cara aplikasi menggunakan SQLDisconnect, lihat Memutuskan sambungan dari Sumber Data atau Driver.
Memutuskan sambungan dari Koneksi Terkumpul
Jika pengumpulan koneksi diaktifkan untuk lingkungan bersama dan aplikasi memanggil SQLDisconnect pada koneksi di lingkungan tersebut, koneksi dikembalikan ke kumpulan koneksi dan masih tersedia untuk komponen lain menggunakan lingkungan bersama yang sama.
Contoh Kode
Lihat Contoh Program ODBC, Fungsi SQLBrowseConnect, dan Fungsi SQLConnect.
Fungsi Terkait
Untuk informasi tentang | Lihat |
---|---|
Mengalokasikan handel | Fungsi SQLAllocHandle |
Menyambungkan ke sumber data | Fungsi SQLConnect |
Menyambungkan ke sumber data menggunakan string koneksi atau kotak dialog | Fungsi SQLDriverConnect |
Menjalankan operasi penerapan atau pembatalan | Fungsi SQLEndtran |
Mengosongkan handel koneksi | Fungsi SQLFreeConnect |