Un exemple, désolé mais je n'ai pas le temps de m'étendre plus:
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include "McrAsm.h"
#pragma comment(lib, "odbc32.lib")
HINSTANCE hinst;
SQLHANDLE henv, hconn;
char szbuff[1024];
char szappname[] = "Connect";
int OdbcConnEnvCreate()
{
SQLRETURN retcd;
retcd = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
if(retcd == SQL_SUCCESS) goto envOK;
if(retcd == SQL_SUCCESS_WITH_INFO) goto envOK;
strcpy(szbuff, "Environment handle allocation failed");
goto errMsg;
envOK:
retcd = SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3,0);
if(retcd == SQL_SUCCESS) goto versOK;
if(retcd == SQL_SUCCESS_WITH_INFO) goto versOK;
strcpy(szbuff, "ODBC version incorrecte");
goto envOut;
versOK:
retcd = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hconn);
if((retcd == SQL_SUCCESS) || (retcd == SQL_SUCCESS_WITH_INFO)) return 1;
strcpy(szbuff, "Connection handle allocation failed");
envOut:
SQLFreeHandle(SQL_HANDLE_ENV, henv);
errMsg:
MessageBox(0, szbuff, szappname, MB_ICONERROR);
return 0;
}
int OdbcSqlConnect(char* dbname, char* dbpwd) // dbpwd char* optionnel
{ // RETOURNE STATUS ERREUR
SQLRETURN rtcd;
char *c;
c = bnstrcpy(szbuff, "DRIVER=SQL Server;AnsiNPW=No;Trusted_Connection=Yes;AutoTranslate=No;SERVER=BIXEON\\BNSQL;DATABASE=");
c = bnstrcpy(c, dbname);
*c = ';';
if(dbpwd) {
if(dbpwd[0]) {
*(c+1) = 'P'; *(c+2) = 'W'; *(c+3) = 'D'; *(c+4) = '=';
c = bnstrcpy(c+5, dbpwd); *c = ';';
}
}
*(c+1) = 0;
rtcd = SQLDriverConnect(hconn, 0, (SQLCHAR*)szbuff, c - szbuff + 2,
0, 0, 0, SQL_DRIVER_NOPROMPT);
if(rtcd &= 0xFFFE) {
SQLFreeHandle(SQL_HANDLE_DBC, hconn);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
}
return rtcd;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE x, PSTR y, int z)
{
hinst = hInstance;
if(!OdbcConnEnvCreate()) return 0;
if(OdbcSqlConnect("MyDb", 0)) return 0;
MessageBox(0, "OK", szappname, MB_ICONINFORMATION);
SQLDisconnect(hconn);
SQLFreeHandle(SQL_HANDLE_DBC, hconn);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return 0;
}
ciao...
[ Lien ]
BruNews, MVP VC++