J'utilise Visual Studio 2008 et SQL Server 2008 pour développer une application (le serveur SQL est dans mon système). J'ai besoin de récupérer des champs de la base de données. J'utilise l'API SQLDriverConnect pour me connecter à la base de données.API C++ SQLDriverConnect
Si j'utilise le "SQL_DRIVER_PROMPT" j'obtiendrai une fenêtre pop pour sélectionner la source de données. Je ne veux pas que cette fenêtre apparaisse. Selon ma compréhension, cette fenêtre apparaîtra si nous fournissons des informations insuffisantes dans la chaîne de connexion. Je pense avoir fourni toutes les informations. J'essaie de me connecter avec l'authentification Windows. J'ai essayé différentes options mais toujours pas de chance. S'il vous plaît aidez-moi à résoudre ce problème.
est Ci-dessous le code que j'utilise:
//********************************************************************************
// SQLDriverConnect_ref.cpp
// compile with: odbc32.lib user32.lib
#include <windows.h>
#include <sqlext.h>
int main() {
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;
SQLRETURN retcode;
SQLWCHAR OutConnStr[255];
SQLSMALLINT OutConnStrLen;
SQLCHAR ConnStrIn[255] =
"DRIVER={SQL Server};SERVER=(local);DSN=MyDSN;DATABASE=MyDatabase;Trusted_Connection=yes;";
//SQLWCHAR *ConntStr =(SQLWCHAR *) "DRIVER={SQL Server};DSN=MyDSN;";
HWND desktopHandle = GetDesktopWindow(); // desktop's window handle
// Allocate environment handle
retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
// Set the ODBC version environment attribute
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER*)SQL_OV_ODBC3, 0);
// Allocate connection handle
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
// Set login timeout to 5 seconds
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)5, 0);
retcode = SQLDriverConnect(// SQL_NULL_HDBC
hdbc,
desktopHandle,
(SQLWCHAR *)ConnStrIn,
SQL_NTS,
OutConnStr,
255,
&OutConnStrLen,
SQL_DRIVER_NOPROMPT);
// Allocate statement handle
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
// Process data
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
}
SQLDisconnect(hdbc);
}
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
}
}
SQLFreeHandle(SQL_HANDLE_ENV, henv);
}
}
//********************************************************************************
Merci à l'avance, Harsha