我在寫一個ODBC數據庫類,它包含用於從給定查詢中獲取一系列屬性和元組的元素函數。C++ ODBC未處理的異常/訪問衝突寫入位置
我的代碼中的語句一行下面這將導致此運行時錯誤是扔在調試模式:
Unhandled exception at <mem loc> in <prog name>: 0xC0000005: Access violation writing location <mem loc>.
這裏是代碼,其中ERROR
點出了問題的行:
SQLINTEGER length = 0;
vector<vector<string>> data;
this->sReturn = SQLFetch(this->sHandle);
while (this->sReturn == SQL_SUCCESS) {
vector<string> tuple;
for (int i = 0; i < columnCount; i++) {
SQLPOINTER value = "";
switch (info[i].columnType) {
case 0 : //SQL_UNKNOWN_TYPE
throw DatabaseAttributeTypeUnknown("The database returned an attribute of an unknown type.");
break;
case 1 : //SQL_CHAR
this->sReturn = SQLGetData(this->sHandle, i + 1, info[i].columnType, value,
info[i].columnSize*sizeof(SQLCHAR),
ERROR &length);
break;
//Some more cases
}
}
任何想法爲什麼這個錯誤被拋出?這是MSDN documentation on SQLGetData(),它將值分配給length
。
謝謝你的時間。
是的,你是對的。價值是罪魁禍首!謝謝! –