我正在使用odbc在native C++中創建一個應用程序。我正在調用一個有小數參數的sql server存儲過程。我正在向該參數傳遞一個浮點數。到目前爲止的代碼:C++ float到sql server DECIMAL正確轉換
SQLDECIMAL *sql_param = new SQLDECIMAL(param);
if(SQL_ERROR == (result = SQLBindParameter(statement_handle, 5, SQL_PARAM_INPUT, SQL_C_FLOAT, SQL_DECIMAL, 12, 6, sql_param, 0, NULL))){
std::wstring error = get_error_message(SQL_HANDLE_STMT, statement_handle);
throw GenericException(error);
}
param是一個浮點數。
在桌子上存儲的東西總是爲0,而不是實際值爲1.45。我猜想一些轉換正在發生,但我無法找出正確的轉換。 SQL_C_FLOAT - > SQL_DECIMAL?
仍然不起作用。我修改了代碼以使用5作爲緩衝區長度。我也嘗試過10,15等,並且它仍然在場中存儲0。 進一步閱讀有關SQLBindParameter的文檔,似乎該參數有時會被忽略(但我不確定是否在這種情況下它被忽略)。我已經閱讀並重新閱讀了文檔,但這並不符合我的想法。 :D –