J'ai une base de données sqlite existante. Je tente d'améliorer les performances de la requête en utilisant un index. J'utilise aussi un wrapper C++ pour sqlite. La valeur de retour est SQLITE_ERROR à partir de l'appel sqlite3_exec ci-dessous.sqlite CREATE INDEX exec renvoyer une erreur
code wrapperest comme suit pour effectuer 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);
}
}
mon code pour créer l'index est:
sprintf_s(statement, sizeof(statement), "CREATE INDEX modeidx ON Models (manufID)");
flDB->execDML(statement);
La base de données est ouverte et valide. Cette section de code est effectuée suite à une section précédente qui lit une autre table dans cette base de données. Avant d'ajouter cette instruction, tout le code fonctionne comme prévu.
Je crois que ma syntaxe est correcte pour créer un index, je ne comprends pas pourquoi je reçois une erreur.
Quel est le type de la variable 'instruction'? En fait, il n'y a aucune raison d'utiliser un tampon intermédiaire pour l'instruction SQL. – grep
Vous pouvez vérifier votre relevé en saisissant le code SQL directement à l'aide, par ex. le [sqlite firefox addon] (http://code.google.com/p/sqlite-manager/). Juste pour vous assurer que votre déclaration est correcte. – nabulke
Imprimez ou analysez dans un débogueur le contenu de * szError. Cela donnera une indication du problème. – ravenspoint