sqlite CREATE INDEX exec返回错误

时间:2011-10-05 13:23:04

标签: c++ sqlite

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

数据库是开放且有效的。此部分代码在上一节中执行,该节读取此数据库中的另一个表。在添加此语句之前,所有代码都按预期工作。

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

1 个答案:

答案 0 :(得分:0)

确保具有该名称的索引尚不存在。尝试:CREATE INDEX IF NOT NOT EXISTS modeidx ON Models(manufID)

...看看你是否还有错误。