2
我正在調用SQLGetData()來獲取字段值。這適用於32位應用程序,但它將堆棧廢棄爲64位。無法將SQLINTEGER *轉換爲SQLLEN *(x64)
奇怪的是,SQLLEN被#defined定義爲SQLINTEGER,所以它們是一樣的。事實證明,它們都是長類型的。
unsigned long Field::asUnsignedLong() const
{
unsigned long result;
SQLINTEGER sizeNeeded = 0;
// Trashes the stack around sizeNeeded...
if(!SQL_SUCCEEDED(SQLGetData(_statement, _columnIndex, SQL_C_ULONG, &result, sizeof(result), &sizeNeeded)))
{
throw std::runtime_error(getError(SQL_HANDLE_STMT, _statement));
}
return result;
}
爲什麼Visual Studio認爲它不能將SQLLEN *轉換爲SQLINTEGER *?當我使用明確的強制轉換強制執行時,爲什麼堆棧會損壞?
感謝您的幫助!
啊哈,就是這樣。謝謝! – James 2012-02-26 14:18:08