Connexion ODBC pour base Oracle en C/C++

cs_mista Messages postés 3 Date d'inscription lundi 2 juin 2003 Statut Membre Dernière intervention 2 juillet 2003 - 2 juin 2003 à 16:36
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 2 juin 2003 à 16:51
mista :question)

Bonjour,

Debutante en panique, je dois creer un programme win32 console, sous vc++6, NT : qui me permettent de me connecter à une base de données Oracle, et d'integrer dans cette base des fichiers textes.

Mais je ne sais pas comment me connecter via ODBC sous VC++ ???

Please Help me !!

1 réponse

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 juin 2003 à 16:51
un exemple minimal de prog ODBC.
Etablissement d'une connexion:

#include <windows.h>
#include <sql.h>
#include <sqlext.h>

#pragma comment(lib, "odbc32.lib")

HINSTANCE hinst;
SQLHANDLE henv, hconn;
long lerror = 0;

char szbuff[1024], szconn[512];
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 OdbcMdbConnect(char* dbname)
{
SQLRETURN retcd;
SQLSMALLINT smret;
strcpy(szbuff, "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=");
if(dbname) strcpy(szbuff+45, dbname);
retcd = SQLDriverConnect(hconn, 0, (SQLCHAR*)szbuff, 60,
(SQLCHAR*)szconn, 264, &smret, SQL_DRIVER_COMPLETE); if((retcd SQL_SUCCESS) || (retcd SQL_SUCCESS_WITH_INFO)) return 1;
SQLFreeHandle(SQL_HANDLE_ENV, hconn);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, int)
{
hinst = hInstance;

if(!OdbcConnEnvCreate()) return 0;
if(!OdbcMdbConnect(0)) return 0;

MessageBox(0, szconn, szappname, MB_ICONINFORMATION);
SQLFreeHandle(SQL_HANDLE_ENV, hconn);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
SQLDisconnect(hconn);
return 0;
}

BruNews, ciao...
0
Rejoignez-nous