特定のクエリから一連の属性とタプルを取得するために使用されるメンバー関数を含む ODBC データベース クラスを作成しています。
以下のステートメントには、このランタイム エラーがデバッグ モードでスローされる原因となる 1 行のコードがあります。
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
}
}
このエラーがスローされる理由について何か考えはありますか? に値を割り当てているSQLGetData() に関する MSDN ドキュメントを次に示しますlength
。
お時間をいただきありがとうございます。