2010-11-18 5 views
1

Was bedeutet dieser Fehler Ich habe versucht Alle möglichen Mittel, um es zu ändern, aber es funktioniert nicht.ODBC ERROR WITHE SQLINTEGER

umwandeln kann nicht 'SQLINTEGER *' auf 'long int *' für Argument '6' 'SQLRETURN SQLGetData (void *, SQLUSMALLINT, SQLSMALLINT, void *, long int, long int *)' betont Text

Here is the code 
#ifndef CPSC_408_DB_H 
#define CPSC_408_DB_H 

#include <sql.h> 
#include <sqlext.h> 
#include <iostream> 
#include <string> using namespace std; 


class Monster { public: 

    Monster(string dsn); ~Monster(); 
    void execQuery(); 


    private: //used for connection and status 
    SQLHENV env; 
    SQLHDBC dbc; 
    SQLHSTMT stmt; 
    SQLRETURN ret; /* ODBC API return status */ 
    SQLCHAR outstr[1024]; SQLSMALLINT outstrlen; 




}; 



#endif 


//sql getdata method 
/* retrieve column data as a string */ 
    ret = SQLGetData(stmt, i+1, SQL_C_CHAR, 
         buf, sizeof(buf), &indicator); 
+0

Das ist eine Fehlermeldung. Wie sieht dein Code aus? Vielleicht rufen Sie den langen int * -Parameter wirklich mit einem SQLINTERGER * auf - auch wenn es versehentlich wegen Fehlcasting ist. – winwaed

+0

@ user475529 - vielen Dank für die Buchung des Codes für den Aufruf von SQLGetData. Könnten Sie bitte die Deklarationen für die in diesem Aufruf erwähnten Variablen hinzufügen, die in Ihrem Codefragment nicht bereits erwähnt sind (dh die Variablen i, buf und indicator)? Vielen Dank. –

Antwort

0

Es wäre hilfreich, wenn Sie den eigentlichen Aufruf von SQLGetData, über den der Compiler stößt, zusammen mit allen zugehörigen Deklarationen posten würden, aber ich werde einen Versuch machen.

Der letzte Parameter zu SQLGetData ist ein Zeiger auf ein langes int (manchmal in einigen Versionen der ODBC-Dokumente als ein SDWORD bezeichnet), kein Zeiger auf ein SQLINTEGER. Überprüfen Sie den Typ der Variablen, deren Adresse Sie übergeben, und aktualisieren Sie sie bei Bedarf.

Teilen und genießen.

+0

Es hat nicht funktioniert, aber hier ist die SqlGetData-Methode – user475529