CONNEXION SQL SERVER EXPRESS C++

cs_metek Messages postés 21 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 23 mai 2006 - 6 avril 2006 à 10:42
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 6 avril 2006 à 13:02
Bonjour,
Voila depuis quelques jours je me prends la tete sur la connexion à un serveur SQL.
J'ai crée une source de donnée ODBC de nom Driver Extraction qui utilise le pilote SQL SERVER.
Ma base de données se nomme ExtractionXMLPFIG sur le serveur SERVEURSQL.
Pour me connecter j'ai essayé quelques trucs dont le dernier:

HENV henv;
//descripteur d'environnement


HDBC hconn;
//descripteur de connexion


SQLRETURN rtcd;


char *c;


char szbuff[255];


UCHAR errmsg[100];


HSTMT stmt;
//


char buf[100];


RETCODE code;


c = strcpy(szbuff,
"DRIVER=SQL Server;SERVER=SERVEURSQL;DATABASE=ExtractionXMLPFIG;UID=sa;PWD=laurent;");


rtcd = SQLDriverConnect(hconn, 0, (SQLCHAR*)szbuff, c - szbuff + 2,


0, 0, 0, SQL_DRIVER_NOPROMPT);


if(rtcd!=SQL_SUCCESS) {


SQLError(henv,hconn,SQL_NULL_HSTMT,NULL,NULL,errmsg,
sizeof(errmsg),NULL);


cout<<
"erreur connexion"<<endl;


return 1;


}

Mais la connection ne se fait pas et je n'arrive pas a comprendre?
Si quelqu'un peut m'aider ca serait sympa!
Merci d'avance
@+

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
6 avril 2006 à 13:02
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...
http://dev.winsysdev.com
BruNews, MVP VC++
0
Rejoignez-nous