Ошибка sqlite: / * Ошибка SQL или отсутствующая база данных * / - PullRequest
0 голосов
/ 18 февраля 2010

У меня есть проект, в котором я сохранил файл базы данных sqlite "data.sqlite3" для «Группа» и файлы «-» ресурс "

Ниже приведены исходные коды моего viewcontroller

//-myviewcontroller.h
#import "sqlite3.h"
#define kFilename @"data.sqlite3"

//myviewcontroller.m

-(NSString *)dataFilePath
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(
        NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    return [documentsDirectory stringByAppendingPathComponent:kFilename];
}

-(void)f
{
    if (sqlite3_open([[self dataFilePath] UTF8String],&database)!=SQLITE_OK)
    //dataFilePath returns
    ///Users/interdev/Library/Application Support/iPhone Simulator/User/Applications/095C6E05-4EAE-4817-883E-A72E39D439E0/Documents/data.sqlite3 
    {
        sqlite3_close(database);
        NSAssert(0,@"Failed to open database");//no problem
    }    

    NSString *query = @"SELECT * FROM table1 ORDER BY ROW";//table1 is table name
    sqlite3_stmt *statement;
    NSInteger v=sqlite3_prepare_v2( database, [query UTF8String],
                                   -1, &statement, nil);
    NSString *zs= [NSString stringWithFormat:@"%d",v];
    NSLog(@" The buttontitile is %@ ",zs);
    if ( v == SQLITE_OK) { // ...
}

Я проверил значение v в журнале, оно всегда равно 1

#define SQLITE_ERROR        1   /* SQL error or missing database */

Я не знаю, почему это произошло.

1 Ответ

1 голос
/ 18 февраля 2010

Похоже, ваш код ищет вашу базу данных в папке «Documents» вашего приложения.

NSArray *paths = NSSearchPathForDirectoriesInDomains(
    NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

Таким образом, если файл data.sqlite3 находится в папке «Ресурсы», приложение не найдет базу данных. Вероятно, лучше всего создать и сохранить базу данных sqlited в папке «Documents» приложения. Eg / Пользователи / interdev / Библиотека / Поддержка приложений / iPhone Simulator / Пользователь / Приложения / 095C6E05-4EAE-4817-883E-A72E39D439E0 / Documents / data.sqlite3

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