我有一个现有的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);

该数据库已打开且有效。本部分代码是在上一部分从该数据库的另一个表中读出后执行的。在添加此语句之前,所有代码均按预期工作。

我相信我的语法对于创建索引是正确的,我不明白为什么会收到错误。

最佳答案

确保不存在具有该名称的索引。尝试:如果不存在,请创建索引modeidx ON模型(manufID)

...看看是否仍然出现错误。

10-07 19:49