C++ API SQLDriverConnect

Je suis à l'aide de visual studio 2008 et sql server 2008 pour le développement de l'application(SQL server est dans mon système). J'ai besoin de récupérer certains champs de la base de données. Je suis l'aide de la SQLDriverConnect API pour se connecter à la base de données.

Si j'utilise le "SQL_DRIVER_PROMPT" je vais obtenir pop fenêtre pour sélectionner la source de données. Je ne veux pas que cette fenêtre apparaisse. Selon ma compréhension de cette fenêtre apparaît si nous fournissent que des informations insuffisantes dans la chaîne de connexion. Je pense que j'ai fourni toutes les informations. Je suis en train d'essayer de se connecter avec l'authentification windows. J'ai essayé différentes options, mais toujours pas de chance. Merci de m'aider dans la résolution de ce problème.

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 d'avance,
Harsha

InformationsquelleAutor user245249 | 2010-01-07