2010-11-18 29 views
1

這個錯誤是什麼意思我試過所有可能的方式來改變它,但它不工作。ODBC ERROR WITHE SQLINTEGER

不能轉換 'SQLINTEGER *' 到 '長整型*' 的說法 '6' 到 'SQLRETURN SQLGetData(void *的,SQLUSMALLINT,SQLSMALLINT,無效*,長整型,長整型*)' 強調文本

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

這是一條錯誤消息。你的代碼是什麼樣的?也許你真的用SQLINTERGER *調用long int *參數 - 即使它是由於錯誤投射而導致的無意的。 – winwaed 2010-11-18 19:11:30

+0

@ user475529 - 感謝您將調用的代碼發佈到SQLGetData。您能否爲您的代碼片段中未提及的此調用中提到的變量(即變量i,buf和指示符)添加聲明?謝謝。 – 2010-11-18 23:13:08

回答

0

如果您將實際調用到編譯器所抱怨的SQLGetData以及所有相關的聲明中,這會有所幫助,但是我會採取一些措施。

SQLGetData的最後一個參數應該是指向long int的指針(在某些版本的ODBC文檔中有時稱爲SDWORD),而不是指向SQLINTEGER的指針。檢查您傳遞的地址的變量類型,並根據需要進行更新。

分享和享受。

+0

它沒有工作,但這裏是SqlGetData方法 – user475529 2010-11-18 20:18:16