我有一个现有的sqlite数据库。我试图通过使用索引来提高查询性能。我也在使用C ++包装器来实现sqlite。返回值是来自下面的sqlite3_exec调用的SQLITE_ERROR。
包装器代码如下执行exec:
Int CppSQLite3DB::execDML(const char* szSQL)
{
checkDB();
char* szError=0;
int nRet = sqlite3_exec(mpDB, szSQL, 0, 0, &szError);
if (nRet == SQLITE_OK)
{
return sqlite3_changes(mpDB);
}
else
{
throw CppSQLite3Exception(nRet, szError);
}
}
我创建索引的代码是:
sprintf_s( statement, sizeof(statement), "CREATE INDEX modeidx ON Models (manufID)");
flDB->execDML(statement);
数据库是开放且有效的。此部分代码在上一节中执行,该节读取此数据库中的另一个表。在添加此语句之前,所有代码都按预期工作。
我相信我的语法对于创建索引是正确的,我不明白为什么我收到错误。
答案 0 :(得分:0)
确保具有该名称的索引尚不存在。尝试:CREATE INDEX IF NOT NOT EXISTS modeidx ON Models(manufID)
...看看你是否还有错误。