SQL читает данные? - PullRequest
       3

SQL читает данные?

0 голосов
/ 13 ноября 2010

Я использовал приведенный ниже код для чтения данных из файла. Sql ничего не происходит, есть ли проблема?

+ (void) getInitialDataToDisplay:(NSString *)dbPath {

SQLAppDelegate *appDelegate = (SQLAppDelegate *)[[UIApplication sharedApplication] delegate];

if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) {

    const char *sql = "select coffeeID, coffeeName from coffee";
    sqlite3_stmt *selectstmt;
    if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) == SQLITE_OK) {

        while(sqlite3_step(selectstmt) == SQLITE_ROW) {

            NSInteger primaryKey = sqlite3_column_int(selectstmt, 0);
            Coffee *coffeeObj = [[Coffee alloc] initWithPrimaryKey:primaryKey];
            coffeeObj.CoffeeName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 1)];

            coffeeObj.isDirty = NO;

            [appDelegate.coffeeArray addObject:coffeeObj];
            [coffeeObj release];
        }
    }
}
    else
        sqlite3_close(database);
}

appDelegate.m - (void) applicationDidFinishLaunching: (UIApplication *) application {

[self copyDatabaseIfNeeded];
NSMutableArray *tempArray = [[NSMutableArray alloc] init];
self.coffeeArray = tempArray;
[tempArray release];

[Coffee getInitialDataToDisplay:[self getDBPath]];
[window addSubview:[navigationController view]];
[window makeKeyAndVisible];

}

1 Ответ

0 голосов
/ 14 ноября 2010

Включает ли выполнение когда-либо предложение while?

В дополнение к тому, что уже было предложено, вот еще несколько вещей, которые можно попробовать:

1) Запустите ваше приложение на симуляторе. Откройте файл базы данных с помощью браузера баз данных SQLite (http://sqlitebrowser.sourceforge.net) и убедитесь, что таблица существует. Проверьте правильность написания имен таблиц и столбцов.

2) Убедитесь, что база данных открывает файл и что dbPath является правильным путем к файлу базы данных в песочнице приложения. Путь должен быть сгенерирован, используя NSDocumentsDirectory:

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

3) Убедитесь, что вы правильно очистили все старые операторы с помощью sqlite_finalize и правильно закрыли базу данных. sqlite_close не должно быть в предложении "else".

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