クエリに Unicode 文字が含まれていると、sqlite3 SELECT クエリが失敗します。つまり、以下のクエリは0
実際のカウントの代わりに返されます。C++/Visual Studio 2010 を使用して選択クエリを生成しています。
SELECT COUNT() FROM mytable where path = "C:\\sølvgut.txt";
SQLite Expert エディターを使用して上記のクエリを実行すると、期待どおりに動作します。しかし、私のコードでは、ラッパー クラス CppSQLite3.cpp を使用して、問題の原因となっているクエリを実行しています。以下のコードでは、else if (nRet == SQLITE_ROW) のコード内に入ります。
CppSQLite3Query CppSQLite3DB::execQuery(const char* szSQL)
{
checkDB();
sqlite3_stmt* pVM = compile(szSQL);
int nRet = sqlite3_step(pVM);
if (nRet == SQLITE_DONE)
{
// no rows
return CppSQLite3Query(mpDB, pVM, true/*eof*/);
}
else if (nRet == SQLITE_ROW)
{
// at least 1 row
return CppSQLite3Query(mpDB, pVM, false/*eof*/);
}
else
{
nRet = sqlite3_finalize(pVM);
const char* szError= sqlite3_errmsg(mpDB);
throw CppSQLite3Exception(nRet, (char*)szError, DONT_DELETE_MSG);
}
}