使用C ++ ...
我正在使用的SQL查询是:
SELECT column FROM table WHERE column = 'name' LIMIT (SELECT COUNT(*) FROM table) - 1, 1
从命令行运行时,我没有任何问题,并取回我期望的结果。但是,当我尝试在代码中使用它时,我的sqlite3_prepare_v2返回SQLITE_ERROR,使用该语句的sqlite3_step返回SQLITE_MISUSE。
我知道其他一切设置正常,因为如果我删除:
(SELECT COUNT(*) FROM table) - 1
进行查询:
SELECT column FROM table WHERE column = 'name' LIMIT 1
它工作正常。所以这就是我想象的问题所在。但是,当我按照我所说的命令行运行它时,它工作正常。周围的代码是:
sqlite3 *db;
sqlite3_open(FILEPATH);
sqlite3_stmt *stmt;
const char *pzTest;
char *szSQL;
szSQL = "SELECT column FROM table WHERE column = 'name' LIMIT (SELECT COUNT(*) FROM table) - 1, 1";
sqlite3_prepare_v2(db, szSQL, 100, &stmt, &pzTest);
sqlite3_step(stmt);