Bonjour,

J'ai cr�� un serveur via SQL Server 2008 et une base de donn�es via SQL Server Management Studio.
J'aimerais d�sormais faire une petit ex�cutable avec WinForms sous Visual C++ 2010 Express pour envoyer des requ�tes, mettre en forme les r�sultats de celles-ci...
J'ai cru comprendre qu'il n'�tait pas possible par d�faut d'acc�der � une base de donn�es avec la version Express.
1) Est-ce vrai?

J'ai donc un peu cherch� et je suis tomb� sur Platform SDK qui apparemment permet d'acc�der � des bases de donn�es depuis Visual Studio.
2) Est-ce vraiment le cas?

J'ai r�ussi � avoir acc�s aux fonctions qui l'int�ressent pour cr�er une connection � une base de donn�es.
Afin de tester la connection � la base, je l'ai encapsul� ans le code d'un Bouton :


Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
private: System::Void button1_Click_1(System::Object^  sender, System::EventArgs^  e) {
			SQLHANDLE hEnv; // ODBC Environment handle
			SQLHANDLE hDbc; // ODBC Connection handle
			SQLHANDLE hStmt; // ODBC Statement handle
			SQLRETURN status;
			SQLSMALLINT   i, MsgLen;
			SQLWCHAR       SqlState[6], Msg[SQL_MAX_MESSAGE_LENGTH];
			SQLINTEGER    NativeError;
 
			status = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv);
			status = SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
			status = SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hDbc);
			status = SQLConnect(hDbc,(SQLWCHAR *) "MONPC\SQLEXPRESS", 16, (SQLWCHAR *)"MONPC\MONLOGIN", 14, (SQLWCHAR *)"", 0);
			i = 1;
			status = SQLGetDiagRec(SQL_HANDLE_STMT, hStmt, i, SqlState, &NativeError, Msg, sizeof(Msg), &MsgLen);
 
			status = SQLAllocHandle(SQL_HANDLE_STMT, hDbc, &hStmt);
			status = SQLSetStmtAttr(hStmt, SQL_ATTR_CURSOR_TYPE, (SQLPOINTER) SQL_CURSOR_STATIC, 0);
			status = SQLExecDirec	t(hStmt, (SQLWCHAR*) "Select * from Amateurs", (SQLINTEGER) 22);
			int rowcnt;						// variable to hold row count
			rowcnt = 0;						// initialize row counter
			while (true && rowcnt<100)						// loop forever
			{
				status = (SQLRETURN)SQLFetch(hStmt);			// fetch a row of data
				if (status == SQL_NO_DATA_FOUND) break;		// if No Data was returned then exit the loop
				rowcnt++;					// add 1 to the row counter
			}
			printf("There were %d rows of data returned by the SQL Statement.\r\n", rowcnt);
			status = SQLCloseCursor(hStmt);
			if (status == SQL_SUCCESS || status == SQL_SUCCESS_WITH_INFO) {
			}
			else {
				printf("Error with SQLCloseCursor...\r\n");
			}
			status = SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
			status = SQLDisconnect(hDbc);
			status = SQLFreeHandle(SQL_HANDLE_DBC, hDbc);
			status = SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
		 }
En ex�cutant pas � pas, ma variable status passe � -1 apr�s l'appel de SQLConnect. Je n'en ai pas la certitude mais il me semble que c'est le code SQL_ERROR
3/ Est-ce vrai?

Je pense que mon utilisation de SQLConnect n'est pas correcte.
4) Ma base est param�tr�e avec Windows Authentification, j'utilise donc mon login Windows, je n'ai pas de mot de passe sur Windows, est-ce un probl�me?
5) Mes appels sont-ils corrects?
6) Y aurait-il quelque chose que j'aurais oubli� de faire?


J'ai essay� de comprendre l'erreur avec la fonction SQLGetDiagRec mais je ne comprends rien � ce que me renvoie cette fonction dans SQLState :

SqlState "" wchar_t[]
[0] 3 L'' wchar_t
[1] 0 L'' wchar_t
[2] 59592 L'' wchar_t
[3] 20 L'' wchar_t
[4] 10 L'' wchar_t
[5] 0 L'' wchar_t

Quelqu'un peut-il m'aider � d�chiffrer ce code d'erreur?

Par ailleurs, status passe � -2 apr�s l'appel de SQLGetDiagRec

Merci d'avance