sqlite CREATE INDEX exec возвращает ошибку - PullRequest
2 голосов
/ 05 октября 2011

У меня есть база данных sqlite.Я пытаюсь улучшить производительность запроса с помощью индекса.Также я использую оболочку C ++ для sqlite.Возвращаемое значение - SQLITE_ERROR из вызова sqlite3_exec ниже.

код оболочки для выполнения 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 голосов
/ 06 декабря 2011

Убедитесь, что индекс с таким именем еще не существует.Попробуйте: CREATE INDEX, ЕСЛИ НЕ СУЩЕСТВУЕТ modeidx ON Models (manufID)

... и посмотрите, по-прежнему ли появляется ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...