SQLite3 - 选择查询失败,带有Unicode字符?

时间:2012-09-21 18:52:05

标签: sql visual-c++ unicode sqlite

如果查询包含任何Unicode字符,我的sqlite3 SELECT查询将失败。即,以下查询返回0而不是实际计数。我正在使用C ++ / Visual Studio 2010生成选择查询。

SELECT COUNT() FROM mytable  where   path = "C:\\sølvgut.txt";

当我使用SQLite Expert编辑器执行上述查询时,它按预期工作。但在我的代码中,我使用包装器类CppSQLite3.cpp来执行导致问题的查询。在下面的代码中,如果(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);
      }
  }

0 个答案:

没有答案