IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

ODBC, sql server et c++


Sujet :

C++

  1. #1
    Membre habitu�
    Femme Profil pro
    �tudiant
    Inscrit en
    Janvier 2012
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Par d�faut ODBC, sql server et c++
    Bonjour !!
    m�chant probl�me � vous soumettre (du moins a mes yeux pour le moment)
    je viens de cr�er une ressource necessaire dans ODBC pour me connecter a distance su mon server SQL... Le probl�me et que j'ai besoin de passer par un programme en c++ pour r�cup�rer mes donn�es... et je ne l'ai jamais fait !!
    Un peu d'aide sympose, lien internet (m�me en anglais).
    ou juste me dire si je suis sur la bone voie ou non.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    int main()
    {
    SQLCHAR dsn[] = "sqlserver", uid[] = "****", pwd[] = "****";
     
                    if ( !SQL_SUCCEEDED(SQLConnectW(con, dsn, SQL_NTS, uid, SQL_NTS, pwd, SQL_NTS)) )
                        fprintf(stderr, "La fonction SQLConnect a echoue.\n");
                    else
                    {
                   \\commande pour lire les tables que je ne métrise pas encore
                    }                       
    }

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Ao�t 2010
    Messages
    50
    D�tails du profil
    Informations personnelles :
    �ge : 38
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2010
    Messages : 50
    Par d�faut
    Bonjour,

    Je suis pass� par la aussi.

    Je m'en suis sorti en utilisant la classe CDatabase (OpenEx) et la classe RecordSet pour les transactions.

    A+

  3. #3
    Expert confirm�

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Software Developer
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par d�faut
    OpenEX et consorts c'est du OLE DB, qui est plus lent que ODBC.
    Il te faut tout d'abord un initialiser ODBC au travers d'un SQLHENV :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //SQLHENV m_hOdbcEnv;
    if( SqlSuccess( SQLAllocHandle( SQL_HANDLE_ENV, SQL_NULL_HANDLE, & m_hOdbcEnv ) ) )
    {
    	if( ! SqlSuccess( SQLSetEnvAttr( m_hOdbcEnv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, SQL_IS_INTEGER ), SQL_HANDLE_ENV, m_hOdbcEnv ) )
    	{
    		SQLFreeHandle( SQL_HANDLE_ENV, m_hOdbcEnv );
    		m_hOdbcEnv = SQL_NULL_HENV;
    	}
    }
    else
    {
    	m_hOdbcEnv = SQL_NULL_HENV;
    }
    Ensuite, pour te connecter, il te faut un HDBC (contexte de connexion) et le connecter � ta base :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    //HDBC m_hDbc;
    SQLAllocHandle( SQL_HANDLE_DBC, m_hOdbcEnv, & m_hDbc ), SQL_HANDLE_ENV, m_hOdbcEnv );
    std::string strConnexionString = "DRIVER={SQL Server}; SERVER=" + strServer + "; DATABASE=" + strDatabase + "; UID=" + strUser + "; PWD=" + strPassword + ";";
    SQLRETURN sqlReturn = SQLDriverConnect( m_hDbc, SQLHWND(NULL), (SqlChar*)strConnexionString.c_str(), SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE_REQUIRED );
    A partir de l� tu peux ex�cuter des requ�tes sur ton serveur :
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    //struct DATA_BINDING
    //{
    //	SQLSMALLINT TargetType;
    //	SQLPOINTER TargetValuePtr;
    //	SQLINTEGER BufferLength;
    //	SQLLEN StrLen_or_Ind;
    //};
    HSTMT hStmt; //=> Statement contenant le résultat de la requête
    // On initialise ce statement
    SqlSuccess( SQLAllocHandle( SQL_HANDLE_STMT, m_hDbc, & hStmt ), SQL_HANDLE_DBC, m_hDbc );
    // On exécute la requête
    if( SqlSuccess( SQLExecDirect( m_hStmt, (SqlChar*)strQuery.c_str(), SQLINTEGER( strQuery.size() ) ), SQL_HANDLE_STMT, hStmt, strQuery ) )
    {
    	// Ca a marchééé !!
    	int iBufferSize = 1024;
    	SQLSMALLINT iNbColumns;
    	char szBuffer[255];
    	SQLSMALLINT iResult;
    	SQLLEN iNumericAttribute;
    	std::string strName;
    	DATA_BINDING * pColumnData;
    	std::vector< sdt::pair< std::string, int > > arrayColumns;
    	// On récupère le nombre de colonnes
    	if( SqlSuccess( SQLNumResultCols( hStmt, & iNbColumns ), SQL_HANDLE_STMT, m_hStmt, strQuery ) && iNbColumns > 0 )
    	{
    		for( SQLSMALLINT i = 1 ; i <= iNbColumns ; i++ )
    		{
    			// Pour chaque colonne, on récupère son nom
    			if( SqlSuccess( SQLColAttribute( hStmt, i, SQL_DESC_LABEL, SQLPOINTER( szBuffer ), 255, & iResult, & iNumericAttribute ), SQL_HANDLE_STMT, hStmt, strQuery ) )
    			{
    				strName = szBuffer;
    				iResult = 0;
    				memset( szBuffer, 0, sizeof( szBuffer ) );
    				// Et son type
    				if( SqlSuccess( SQLColAttribute( m_hStmt, i, SQL_DESC_TYPE, SQLPOINTER( szBuffer ), 255, & iResult, & iNumericAttribute ), SQL_HANDLE_STMT, m_hStmt, strQuery ) )
    				{
    					// Le type est stocké dans iNumericAttribute
    					arrayColumns.push_back( std::make_pair( strName, iNumericAttribute ) );
    				}
    			}
    		}
    		// On initialise la sructure qui recevra chaque ligne du résultat
    		pColumnData = new DATA_BINDING[iNbColumns];
     
    		// On alloue la mémoire de ses champs
    		for( int i = 0 ; i < iNbColumns ; i++  )
    		{
    			pColumnData[i].TargetType = SQL_C_CHAR;
    			pColumnData[i].BufferLength = iBufferSize + 1;
    			pColumnData[i].TargetValuePtr = new unsigned char[pColumnData[i].BufferLength];
    		}
     
    		BOOL bResult = TRUE;
     
    		// On associe chaque colonne du statement aux colonnes e notre structure
    		for( int i = 0 ; i < iNbColumns && bResult ; i++  )
    		{
    			bResult = SqlSuccess( SQLBindCol( hStmt, ( SQLUSMALLINT )i + 1, pColumnData[i].TargetType, pColumnData[i].TargetValuePtr, pColumnData[i].BufferLength, &( pColumnData[i].StrLen_or_Ind ) ), SQL_HANDLE_STMT, hStmt, strQuery );
    		}
     
    		std::string strFieldValue;
    		// On parcourt maintenant les lignes du résultat
    		while( SqlSuccess( SQLFetch( hStmt ), SQL_HANDLE_STMT, hStmt ) )
    		{
    			strFieldValue = (char*)pColumnData[i].TargetValuePtr;
    			// Tu peux maintenant faire ce que tu veux de la valeur, en fonction du type de la colonne.
    		}
     
    		// free memory from the binding
    		for( int i = 0 ; i < iNbColumns ; i++  )
    		{
    			delete [] pColumnData[i].TargetValuePtr;
    		}
     
    		delete [] pColumnData;
     
    		SqlSuccess( SQLCloseCursor( hStmt ), SQL_HANDLE_STMT, hStmt );
    	}
    }
    if( hStmt != SQL_NULL_HSTMT )
    {
    	SQLFreeHandle( SQL_HANDLE_STMT, hStmt );
    }
    Une fois que tu as tout termin� avec ta bdd, tu fais un cleanup :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if( m_hDbc != SQL_NULL_HDBC )
    {
    	SQLDisconnect( m_hDbc );
    	SQLFreeHandle( SQL_HANDLE_DBC, m_hDbc );
    	m_hDbc = NULL;
    }
    if( m_hOdbcEnv != SQL_NULL_HENV )
    {
    	SQLFreeHandle( SQL_HANDLE_ENV, m_hOdbcEnv );
    	m_hOdbcEnv = SQL_NULL_HENV;
    }
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert � rien, mais qu'il est joli (des fois) : ProceduralGenerator (G�n�ration proc�durale d'images, et post-processing).

  4. #4
    Membre habitu�
    Femme Profil pro
    �tudiant
    Inscrit en
    Janvier 2012
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Par d�faut yeah
    Merci avous deux,
    je vais faire des tests,
    et je vous revient avec des nouvelles... Bonne j'esp�re

  5. #5
    Membre habitu�
    Femme Profil pro
    �tudiant
    Inscrit en
    Janvier 2012
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Par d�faut test
    Allo,
    j'ai fait mon petit code et il me met des erreurs incomprehensible pour moi un peu d'aide svp...

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    #include "StdAfx.h"
    #include "iostream"
    #include "windows.h"
    #include "sqltypes.h"
    #include "sql.h"
    #include "sqlext.h"
     
    using namespace std;
     
    void show_error(unsigned int handletype, const SQLHANDLE& handle){
    	SQLCHAR sqlstate[1024];
        SQLCHAR message[1024];
    	if(SQL_SUCCESS == SQLGetDiagRec(handletype, handle, 1, sqlstate, NULL, message, 1024, NULL))
            cout<<"Message: "<<message<<"\nSQLSTATE: "<<sqlstate<<endl;
    }
     
    int main(){
    	//for example
    char* dsnName ="sqlserver";
    char* userID = "*****";
    char* passwd = "****";
    char* retVal[256];
    unsigned int cbData;
     
    SQLHANDLE sqlenvhandle = SQL_NULL_HANDLE; 
    SQLHANDLE sqlconnectionhandle = SQL_NULL_HANDLE;
    SQLHANDLE sqlstatementhandle = SQL_NULL_HANDLE;
        SQLRETURN retcode;
     
        if(SQL_SUCCESS!=SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &sqlenvhandle))
            goto FINISHED;
     
        if(SQL_SUCCESS!=SQLSetEnvAttr(sqlenvhandle,SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0)) 
            goto FINISHED;
     
        if(SQL_SUCCESS!=SQLAllocHandle(SQL_HANDLE_DBC, sqlenvhandle, &sqlconnectionhandle))
            goto FINISHED;
     
    	SQLConnect(sqlconnectionhandle, (SQLCHAR*)dsnName,SQL_NTS,(SQLCHAR*)userID,SQL_NTS, (SQLCHAR*)passwd, SQL_NTS);
     
     
        if(SQL_SUCCESS!=SQLAllocHandle(SQL_HANDLE_STMT, sqlconnectionhandle, &sqlstatementhandle))
            goto FINISHED;
     
        if(SQL_SUCCESS!=SQLExecDirect(sqlstatementhandle, (SQLCHAR*)"select * from tblTag", SQL_NTS)){
            show_error(SQL_HANDLE_STMT, sqlstatementhandle);
            goto FINISHED;
        }
        else{
            char name[64];
            char address[64];
            int id;
            while(SQLFetch(sqlstatementhandle)==SQL_SUCCESS){
                SQLGetData(sqlstatementhandle, 1, SQL_C_ULONG, &id, 0, NULL);
                SQLGetData(sqlstatementhandle, 2, SQL_C_CHAR, name, 64, NULL);
                SQLGetData(sqlstatementhandle, 3, SQL_C_CHAR, address, 64, NULL);
                cout<<id<<" "<<name<<" "<<address<<endl;
            }
        }
     
    FINISHED:
        SQLFreeHandle(SQL_HANDLE_STMT, sqlstatementhandle );
        SQLDisconnect(sqlconnectionhandle);
        SQLFreeHandle(SQL_HANDLE_DBC, sqlconnectionhandle);
        SQLFreeHandle(SQL_HANDLE_ENV, sqlenvhandle);
     
    }
    voici les erreurs :
    1>sql.cpp(14): error C2664: 'SQLGetDiagRecW'*: impossible de convertir le param�tre 4 de 'SQLCHAR [1024]' en 'SQLWCHAR *'
    1> Les types point�s n'ont aucun rapport entre eux*; conversion n�cessitant reinterpret_cast, cast de style C ou cast de style fonction
    1>sql.cpp(40): error C2664: 'SQLConnectW'*: impossible de convertir le param�tre 2 de 'SQLCHAR *' en 'SQLWCHAR *'
    1> Les types point�s n'ont aucun rapport entre eux*; conversion n�cessitant reinterpret_cast, cast de style C ou cast de style fonction
    1>sql.cpp(46): error C2664: 'SQLExecDirectW'*: impossible de convertir le param�tre 2 de 'SQLCHAR *' en 'SQLWCHAR *'

    merci pour le coup de main

  6. #6
    Expert confirm�

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Software Developer
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par d�faut
    Apparemment tu compiles en unicode, il faut donc que tu remplaces SQLCHAR par SQLTCHAR, char par TCHAR et que tu entoures tes chaines de caract�res avec _T() (ex: TCHAR szCoin = _T( "coin!!" ) )pour te d�douaner de ce genre de probl�mes
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert � rien, mais qu'il est joli (des fois) : ProceduralGenerator (G�n�ration proc�durale d'images, et post-processing).

  7. #7
    Membre habitu�
    Femme Profil pro
    �tudiant
    Inscrit en
    Janvier 2012
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Par d�faut probleme jeton
    allo,
    probleme resolu mais qui en a engendrer de nouveau
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    // sql.cpp : fichier projet principal.
     
    #include "StdAfx.h"
    #include "initguid.h"
    #include "iostream"
    #include "windows.h"
    #include "sqltypes.h"
    #include "sql.h"
    #include "sqlext.h"
     
    #pragma comment(lib, "User32.lib")
    #pragma comment(lib, "oleaut32.lib")
    #pragma comment(lib, "ole32.lib") 
     
     
    using namespace std;
     
    void show_error(unsigned int handletype, const SQLHANDLE& handle){
           SQLTCHAR sqlstate[1024];
        SQLTCHAR message[1024];
           if(SQL_SUCCESS == SQLGetDiagRecW(handletype, handle, 1, sqlstate, NULL,message, 1024, NULL))
            cout<<"Message: "<<message<<"\nSQLSTATE: "<<sqlstate<<endl;
    }
     
    int main(){
           //for example
    TCHAR* dsnName =L"sqlserver";
    TCHAR* userID =L"*******";
    TCHAR* passwd =L"*******";
    TCHAR* retVal[256];
    unsigned int cbData;
     
    SQLHANDLE sqlenvhandle = SQL_NULL_HANDLE; 
    SQLHANDLE sqlconnectionhandle = SQL_NULL_HANDLE;
    SQLHANDLE sqlstatementhandle = SQL_NULL_HANDLE;
        SQLRETURN retcode;
     
        if(SQL_SUCCESS!=SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &sqlenvhandle))
            goto FINISHED;
     
        if(SQL_SUCCESS!=SQLSetEnvAttr(sqlenvhandle,SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0)) 
            goto FINISHED;
     
        if(SQL_SUCCESS!=SQLAllocHandle(SQL_HANDLE_DBC, sqlenvhandle, &sqlconnectionhandle))
            goto FINISHED;
     
           SQLConnectW(sqlconnectionhandle, (SQLTCHAR*)dsnName,SQL_NTS,(SQLTCHAR*)userID,SQL_NTS, (SQLTCHAR*)passwd, SQL_NTS);
     
     
        if(SQL_SUCCESS!=SQLAllocHandle(SQL_HANDLE_STMT, sqlconnectionhandle, &sqlstatementhandle))
            goto FINISHED;
     
        if(SQL_SUCCESS!=SQLExecDirectW(sqlstatementhandle, (SQLTCHAR*)"select * from tblTag", SQL_NTS)){
            show_error(SQL_HANDLE_STMT, sqlstatementhandle);
            goto FINISHED;
        }
        else{
            TCHAR name[64];
            TCHAR address[64];
            int id;
            while(SQLFetch(sqlstatementhandle)==SQL_SUCCESS){
                SQLGetData(sqlstatementhandle, 1, SQL_C_ULONG, &id, 0, NULL);
                SQLGetData(sqlstatementhandle, 2, SQL_C_TCHAR, name, 64, NULL);
                SQLGetData(sqlstatementhandle, 3, SQL_C_TCHAR, address, 64, NULL);
                cout<<id<<" "<<name<<" "<<address<<endl;
            }
        }
     
    FINISHED:
        SQLFreeHandle(SQL_HANDLE_STMT, sqlstatementhandle );
        SQLDisconnect(sqlconnectionhandle);
        SQLFreeHandle(SQL_HANDLE_DBC, sqlconnectionhandle);
        SQLFreeHandle(SQL_HANDLE_ENV, sqlenvhandle);
        return 0;
    }
    voici mes erreurs :
    sql.obj : error LNK2028: jeton non r�solu (0A000343) "extern "C" short __stdcall SQLDisconnect(void *)" (?SQLDisconnect@@$$J14YGFPAX@Z) r�f�renc� dans la fonction "int __cdecl main(void)" (?main@@$$HYAHXZ)
    1>sql.obj : error LNK2028: jeton non r�solu (0A000344) "extern "C" short __stdcall SQLFreeHandle(short,void *)" (?SQLFreeHandle@@$$J18YGFFPAX@Z) r�f�renc� dans la fonction "int __cdecl main(void)" (?main@@$$HYAHXZ)
    1>sql.obj : error LNK2028: jeton non r�solu (0A000345) "extern "C" short __stdcall SQLGetData(void *,unsigned short,short,void *,long,long *)" (?SQLGetData@@$$J224YGFPAXGF0JPAJ@Z) r�f�renc� dans la fonction "int __cdecl main(void)" (?main@@$$HYAHXZ)
    1>sql.obj : error LNK2028: jeton non r�solu (0A000346) "extern "C" short __stdcall SQLFetch(void *)" (?SQLFetch@@$$J14YGFPAX@Z) r�f�renc� dans la fonction "int __cdecl main(void)" (?main@@$$HYAHXZ)
    1>sql.obj : error LNK2028: jeton non r�solu (0A000347) "extern "C" short __stdcall SQLExecDirectW(void *,wchar_t *,long)" (?SQLExecDirectW@@$$J212YGFPAXPA_WJ@Z) r�f�renc� dans la fonction "int __cdecl main(void)" (?main@@$$HYAHXZ)
    1>sql.obj : error LNK2028: jeton non r�solu (0A000348) "extern "C" short __stdcall SQLConnectW(void *,wchar_t *,short,wchar_t *,short,wchar_t *,short)" (?SQLConnectW@@$$J228YGFPAXPA_WF1F1F@Z) r�f�renc� dans la fonction "int __cdecl main(void)" (?main@@$$HYAHXZ)
    1>sql.obj : error LNK2028: jeton non r�solu (0A000349) "extern "C" short __stdcall SQLSetEnvAttr(void *,long,void *,long)" (?SQLSetEnvAttr@@$$J216YGFPAXJ0J@Z) r�f�renc� dans la fonction "int __cdecl main(void)" (?main@@$$HYAHXZ)
    1>sql.obj : error LNK2028: jeton non r�solu (0A00034A) "extern "C" short __stdcall SQLAllocHandle(short,void *,void * *)" (?SQLAllocHandle@@$$J212YGFFPAXPAPAX@Z) r�f�renc� dans la fonction "int __cdecl main(void)" (?main@@$$HYAHXZ)
    1>sql.obj : error LNK2028: jeton non r�solu (0A00034C) "extern "C" short __stdcall SQLGetDiagRecW(short,void *,short,wchar_t *,long *,wchar_t *,short,short *)" (?SQLGetDiagRecW@@$$J232YGFFPAXFPA_WPAJ1FPAF@Z) r�f�renc� dans la fonction "void __cdecl show_error(unsigned int,void * const &)" (?show_error@@$$FYAXIABQAX@Z)
    1>sql.obj : error LNK2019: symbole externe non r�solu "extern "C" short __stdcall SQLGetDiagRecW(short,void *,short,wchar_t *,long *,wchar_t *,short,short *)" (?SQLGetDiagRecW@@$$J232YGFFPAXFPA_WPAJ1FPAF@Z) r�f�renc� dans la fonction "void __cdecl show_error(unsigned int,void * const &)" (?show_error@@$$FYAXIABQAX@Z)
    1>sql.obj : error LNK2019: symbole externe non r�solu "extern "C" short __stdcall SQLDisconnect(void *)" (?SQLDisconnect@@$$J14YGFPAX@Z) r�f�renc� dans la fonction "int __cdecl main(void)" (?main@@$$HYAHXZ)
    1>sql.obj : error LNK2019: symbole externe non r�solu "extern "C" short __stdcall SQLFreeHandle(short,void *)" (?SQLFreeHandle@@$$J18YGFFPAX@Z) r�f�renc� dans la fonction "int __cdecl main(void)" (?main@@$$HYAHXZ)
    1>sql.obj : error LNK2019: symbole externe non r�solu "extern "C" short __stdcall SQLGetData(void *,unsigned short,short,void *,long,long *)" (?SQLGetData@@$$J224YGFPAXGF0JPAJ@Z) r�f�renc� dans la fonction "int __cdecl main(void)" (?main@@$$HYAHXZ)
    1>sql.obj : error LNK2019: symbole externe non r�solu "extern "C" short __stdcall SQLFetch(void *)" (?SQLFetch@@$$J14YGFPA.......................

  8. #8
    Expert confirm�

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Software Developer
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par d�faut
    Il te manque juste la lib qui va bien, si je me souviens bien, c'est odbc32.lib
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert � rien, mais qu'il est joli (des fois) : ProceduralGenerator (G�n�ration proc�durale d'images, et post-processing).

  9. #9
    Membre habitu�
    Femme Profil pro
    �tudiant
    Inscrit en
    Janvier 2012
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Par d�faut thx
    yeah, merci a vous, sa marche avec odbc32,
    petit souci de droit pour me connecter masi sa sa n'as pas de rapport avec le programme, merci beaucoup au plaisir !!!

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 3
    Dernier message: 18/01/2007, 10h48
  2. [Microsoft][ODBC SQL Server] 6 + ASP
    Par Opo dans le forum ASP
    R�ponses: 2
    Dernier message: 21/11/2006, 08h45
  3. Lien ODBC SQL Server
    Par Praline dans le forum Oracle
    R�ponses: 1
    Dernier message: 20/10/2006, 14h04
  4. Creation de ODBC sql Server
    Par lessoy dans le forum VB 6 et ant�rieur
    R�ponses: 5
    Dernier message: 26/05/2006, 15h11
  5. ODBC SQL Server VC++
    Par afan dans le forum MFC
    R�ponses: 10
    Dernier message: 19/03/2004, 10h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo