У меня есть DLL, где я делаю подключение к базе данных MySQL. У меня есть функции Open(), Close(), Update() и Find(). Функции Update() вставляют данные в таблицу, и это работает отлично. Однако функция Find() просто выполняет простой запрос к той же таблице. Когда я вызываю функцию getXX(), я получаю ошибку нарушения прав доступа, и я не могу понять, почему. Что мне не хватает? Обратите внимание, что запрос представляет собой представление, а не прямую таблицу, но я бы не подумал, что это имеет значение.Ошибка MySQL C++ Нарушение доступа
MT4_EXPFUNC int __stdcall Find(char* pair)
{
try
{
sql::Statement *stmt;
sql::ResultSet* res;
string p = pair;
string buysell = "";
string qry = "select * from forex.GPBUSD_CURRENT_PRICE";
stmt = _connection->createStatement();
res = stmt->executeQuery(qry);
// if we have a record it means we have a trade chance
if(res->next())
{
buysell = res->getString(1); // ACCESS VIOLATION ERROR HERE
}
// clean up
delete res;
delete stmt;
if(buysell == "SELL")
return 1;
else if(buysell == "BUY")
return 2;
else
return 0;
}
catch(sql::SQLException &e)
{
return -1;
}
}
У меня есть более одного столбца, поэтому даже если это нулевой индекс, он должен вытащить столбец. Он также не должен быть пустым, поскольку я запускаю запрос в workbench MySQL, и он возвращает результат. Если это NULL, как вы это проверяете перед чтением? – user441521
Я поместил a if (! Res-> isNull (1)) перед этим, и он передал эту проверку, чтобы она не была нулевой. – user441521
Итак, если res не является допустимым указателем, что может быть причиной этого? Это проблема. Почему бы это не сделать? – user441521