SQLITE_MISSUSE при попытке открыть разные локализованные базы данных - PullRequest
0 голосов
/ 01 февраля 2012

Я работаю над локализацией и приложением.Это включает перевод и базу данных SQLite.Я сделал 2 разные базы данных, одну для английского и одну для испанского.Приложение перед переводом (работает отлично) открывает базу данных следующим образом:

NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
NSString *databasePath = [documentsDir stringByAppendingPathComponent:@"fitnessencyclopedia102.sql"];

Чтобы правильно открыть каждую базу данных, этот поток помог мне, предложив мне открыть базу данных следующим образом:

NSArray *languagesArray = [NSLocale preferredLanguages];
NSString *currentLanguage = [languagesArray objectAtIndex:0];
NSString *pathComponent = [NSString stringWithFormat:@"%@.lproj/fitnessencyclopedia102.sql", currentLanguage];
NSString *databasePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:pathComponent];

Очевидно, что он работает нормально, но при попытке сделать запрос INSERT не работает.Я получаю состояние SQLITE_MISSUSE при попытке выполнить здесь:

strQuery = @"INSERT INTO TblWorkout (WorkoutTitle, UserID) VALUES( '";
    strQuery =[strQuery stringByAppendingString:lstrWorkoutTitle];
    strQuery =[strQuery stringByAppendingString:@"', "];
    strQuery =[strQuery stringByAppendingString:[[GlobalSingleton sharedInstance]SelectedUserID]];
    strQuery =[strQuery stringByAppendingString:@")"];

    const char *sqlStatement = [strQuery UTF8String];

    sqlite3_stmt *compiledStatement;
    if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK)
    {   
        while(sqlite3_step(compiledStatement) == SQLITE_DONE) 

Здесь я не могу войти в оператор while, потому что вместо SQLITE_DONE я получаю SQLITE_MISSUSE.Это почему??Я не могу понять, что происходит, я потерял целый день на этом ...

Обратите внимание, что я получаю SQLITE_DONE (работает нормально) при открытии базы данных с первым куском кода.Но тогда Локализация не будет работать.И при открытии базы данных со вторым фрагментом кода я получаю SQLITE_MISSUSE (не работает), но локализация работает нормально.

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