如果查询包含任何 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);
}
}