Je cherche désespérément à me connecter à une base de données PostgreSQL (8.2) via un programme C++ codé sous Visual C++ 6.
J'ai trouvé le code que je joins, mais ça ne fonctionne pas : déjà j'ai du transtyper les chaînes de caractères pour que ça compile (genre char* en const char*, mais ça c'est pas trop grave...).
Le problème c'est qu'à l'exécution il me dit qu'il ne trouve pas le driver...

Est ce que vous avez une idée de l'origine du problème ??
ma chaîne de connexion n'est certainement pas valide, mais pourtant elle me semble bonne :
#define CONNSTR "DSN=nomDeMaConnexion;DRIVER={PostgreSQL ANSI}"
//issu de http://www.softlookup.com/tutorial/vc++/vcu33fi.asp #include <windows.h> #include <sql.h> #include <sqlext.h> #include <string.h> #define CONNSTR \ "DBQ=AGES.XLS;DRIVER={Microsoft Excel Driver (*.xls)}" #define CONNLEN (sizeof(CONNSTR)-1) #define SQLTRY(x,y) \ { \ rc = y; \ if (rc != SQL_SUCCESS) \ { \ char buf[255]; \ char szState[6]; \ char szMsg[255]; \ SDWORD sdwNative; \ SWORD swMsgLen; \ SQLError(hEnv, hDBC, hStmt, szState, &sdwNative, \ szMsg, sizeof(szMsg), &swMsgLen); \ wsprintf(buf, "Error %d performing %s\nSQLState = %s" \ "\nSQL message = %s", rc, x, szState, szMsg); \ MessageBox(NULL, buf, "Error", MB_OK | MB_ICONSTOP); \ goto Terminate; \ } \ } int WINAPI WinMain(HINSTANCE d1, HINSTANCE d2, LPSTR d3, int d4) { SQLHENV hEnv = 0; SQLHDBC hDBC = 0; SQLHSTMT hStmt = 0; SQLCHAR szConnStr[255]; SQLCHAR szStmt[255]; SQLCHAR szFirstName[255]; SQLCHAR szLastName[255]; long nAge; SWORD cbConnStr; RETCODE rc; SDWORD sdwLNLen; SDWORD sdwFNLen; SDWORD sdwALen; int i; char szResult[1000]; SQLTRY("SQLAllocEnv", SQLAllocEnv(&hEnv)) SQLTRY("SQLAllocConnect", SQLAllocConnect(hEnv, &hDBC)) SQLTRY("SQLDriverConnect", SQLDriverConnect(hDBC, NULL, CONNSTR, CONNLEN, szConnStr, sizeof(szConnStr), &cbConnStr, SQL_DRIVER_NOPROMPT)) SQLTRY("SQLAllocStmt", SQLAllocStmt(hDBC, &hStmt)) wsprintf(szStmt, "SELECT * FROM [Sheet1$]"); SQLTRY("SQLPrepare", SQLPrepare(hStmt, szStmt, strlen(szStmt))) SQLTRY("SQLBindCol", SQLBindCol(hStmt, 1, SQL_C_CHAR, (PTR)szLastName, sizeof(szLastName), &sdwLNLen)) SQLTRY("SQLBindCol", SQLBindCol(hStmt, 2, SQL_C_CHAR, (PTR)szFirstName, sizeof(szFirstName), &sdwFNLen)) SQLTRY("SQLBindCol", SQLBindCol(hStmt, 3, SQL_C_SLONG, (PTR)&nAge, sizeof(nAge), &sdwALen)) SQLTRY("SQLExecute", SQLExecute(hStmt)) for (i = 1; (rc = SQLFetch(hStmt)) == SQL_SUCCESS; i++) { wsprintf(szResult, "Record #%d\nLast Name: %s\nFirst Name:" " %s\nAge: %d", i, szLastName, szFirstName, nAge); MessageBox(NULL, szResult, "Data", MB_OK); } if (rc != SQL_NO_DATA_FOUND) { SQLTRY("SQLFetch", rc) } MessageBox(NULL, "Successfully completed.", "Success", MB_OK); Terminate: if (hStmt) SQLFreeStmt(hStmt, SQL_CLOSE); if (hDBC) SQLDisconnect(hDBC); if (hDBC) SQLFreeConnect(hDBC); if (hEnv) SQLFreeEnv(hEnv); }