2010-11-18 2 views
1

이 오류가 나는 그것을 변화의 가능한 모든 방법을 시도했지만 그것이 작동하지 않는 의미합니까 무엇.ODBC 오류 가지 SQLINTEGER는

은에 '* SQLINTEGER을'변환 할 수 없습니다 '긴 INT *'인수 '6' 'SQLRETURN SQLGetData를 (무효 *, SQLUSMALLINT, SQLSMALLINT 무효 *, long int와 긴 INT *)'을 강조 텍스트에 대한

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); 
컴파일러가 모든 관련 선언과 함께에 대해 흥미를 끄는 것이 SQLGetData를의 실제 전화를 게시하려는 경우
+0

오류 메시지입니다. 코드는 어떻게 생겼습니까? 어쩌면 mis-casting으로 인해 부주의 한 경우에도 SQLINTERGER *를 사용하여 long int * 매개 변수를 호출하는 것일 수 있습니다. – winwaed

+0

@ user475529 - SQLGetData에 대한 호출 코드를 게시 해 주셔서 감사합니다. 이 코드에서 이미 언급 한 변수 (즉, 변수 i, buf 및 표시기)에 언급되지 않은 변수에 대한 선언을 추가 할 수 있습니까? 고맙습니다. –

답변

0

그것은 도움이 될,하지만 난 그것을 자상 할게요.

SQLGetData의 마지막 매개 변수는 SQLINTEGER에 대한 포인터가 아닌 긴 int (때로는 ODBC 문서의 일부 버전에서 SDWORD라고 함)에 대한 포인터로 간주됩니다. 전달할 주소의 변수 유형을 확인하고 필요에 따라 변수를 업데이트하십시오.

공유하고 즐길 수 있습니다.

+0

작동하지 않았지만 여기 SqlGetData 메서드가 있습니다. – user475529

관련 문제