0
私はMySQLデータベースに接続するDLLを持っています。私は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;
}
}
私は1つ以上の列を持っているので、インデックスがゼロであっても列を引き出す必要があります。私はMySQLワークベンチでクエリを実行しているので、結果を返すので、nullであってはなりません。もしそれがNULLであれば、それを読む前にどうやってチェックするのですか? – user441521
私はそれの前にif(!res-> isNull(1))を置いて、それがnullでないようにチェックを渡しました。 – user441521
したがって、resが有効なポインタではない場合、何が原因である可能性がありますか?それが問題です。なぜそれは有効ではないでしょうか? – user441521