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.

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

Lihat Juga

Referensi API ODBC
File Header ODBC