Contoh Penjelajahan SQL Server

Contoh berikut menunjukkan bagaimana SQLBrowse Koneksi dapat digunakan untuk menelusuri koneksi yang tersedia dengan driver untuk SQL Server. Pertama, aplikasi meminta handel koneksi:

SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);  

Selanjutnya, aplikasi memanggil SQLBrowse Koneksi dan menentukan driver SQL Server, menggunakan deskripsi driver yang dikembalikan oleh SQLDrivers:

SQLBrowseConnect(hdbc, "DRIVER={SQL Server};", SQL_NTS, BrowseResult,  
                  sizeof(BrowseResult), &BrowseResultLen);  

Karena ini adalah panggilan pertama ke SQLBrowse Koneksi, Driver Manager memuat driver SQL Server dan memanggil fungsi SQLBrowse driver Koneksi dengan argumen yang sama dengan yang diterimanya dari aplikasi.

Catatan

Jika Anda menyambungkan ke penyedia sumber data yang mendukung autentikasi Windows, Anda harus menentukan Trusted_Connection=yes alih-alih ID pengguna dan informasi kata sandi di string koneksi.

Driver menentukan bahwa ini adalah panggilan pertama ke SQLBrowse Koneksi dan mengembalikan atribut koneksi tingkat kedua: server, nama pengguna, kata sandi, nama aplikasi, dan ID stasiun kerja. Untuk atribut server, ia mengembalikan daftar nama server yang valid. Kode pengembalian dari SQLBrowse Koneksi SQL_NEED_DATA. Berikut adalah string hasil penelusuran:

"SERVER:Server={red,blue,green,yellow};UID:Login ID=?;PWD:Password=?;  
   *APP:AppName=?;*WSID:WorkStation ID=?;"  

Setiap kata kunci dalam string hasil penelusuran diikuti oleh titik dua dan satu atau beberapa kata sebelum tanda sama dengan. Kata-kata ini adalah nama yang mudah digunakan aplikasi untuk membuat kotak dialog. Kata kunci APP dan WSID diawali oleh tanda bintang, yang berarti kata kunci tersebut bersifat opsional. Kata kunci SERVER, UID, dan PWD tidak diawali oleh tanda bintang; nilai harus disediakan untuk mereka dalam string permintaan penelusuran berikutnya. Nilai untuk kata kunci SERVER mungkin salah satu server yang dikembalikan oleh SQLBrowse Koneksi atau nama yang disediakan pengguna.

Aplikasi memanggil SQLBrowse Koneksi lagi, menentukan server hijau dan menghilangkan kata kunci APP dan WSID dan nama yang mudah digunakan setelah setiap kata kunci:

SQLBrowseConnect(hdbc, "SERVER=green;UID=Smith;PWD=Sesame;", SQL_NTS,  
                  BrowseResult, sizeof(BrowseResult), &BrowseResultLen);  

Driver mencoba menyambungkan ke server hijau. Jika ada kesalahan nonfatal, seperti pasangan nilai kata kunci yang hilang, SQLBrowse Koneksi mengembalikan SQL_NEED_DATA dan tetap dalam status yang sama seperti sebelum kesalahan. Aplikasi dapat memanggil SQLGetDiagField atau SQLGetDiagRec untuk menentukan kesalahan. Jika koneksi berhasil, driver mengembalikan SQL_NEED_DATA dan mengembalikan string hasil penelusuran:

"*DATABASE:Database={master,model,pubs,tempdb};  
   *LANGUAGE:Language={us_english,Franais};"  

Karena atribut dalam string ini bersifat opsional, aplikasi dapat menghilangkannya. Namun, aplikasi harus memanggil SQLBrowse Koneksi lagi. Jika aplikasi memilih untuk menghilangkan nama dan bahasa database, aplikasi menentukan string permintaan penelusuran kosong. Dalam contoh ini, aplikasi memilih database pub dan memanggil SQLBrowse Koneksi waktu terakhir, menghilangkan kata kunci LANGUAGE dan tanda bintang sebelum kata kunci DATABASE:

SQLBrowseConnect(hdbc, "DATABASE=pubs;", SQL_NTS, BrowseResult,  
                  sizeof(BrowseResult), &BrowseResultLen);  

Karena atribut DATABASE adalah atribut koneksi akhir yang diperlukan oleh driver, proses penjelajahan selesai, aplikasi terhubung ke sumber data, dan SQLBrowse Koneksi mengembalikan SQL_SUCCESS. SQLBrowse Koneksi juga mengembalikan string koneksi lengkap sebagai string hasil penelusuran:

"DSN=MySQLServer;SERVER=green;UID=Smith;PWD=Sesame;DATABASE=pubs;"  

String koneksi akhir yang dikembalikan oleh driver tidak berisi nama yang mudah digunakan setelah setiap kata kunci, juga tidak berisi kata kunci opsional yang tidak ditentukan oleh aplikasi. Aplikasi dapat menggunakan string ini dengan SQLDriver Koneksi untuk menyambungkan kembali ke sumber data pada handel koneksi saat ini (setelah terputus) atau untuk menyambungkan ke sumber data pada handel koneksi yang berbeda. Contohnya:

SQLDriverConnect(hdbc, hwnd, BrowseResult, SQL_NTS, ConnStrOut,  
                  sizeof(ConnStrOut), &ConnStrOutLen, SQL_DRIVER_NOPROMPT);