Как обрабатывать возвращаемый нуль из SQLite - PullRequest
0 голосов
/ 17 октября 2010

Я использую это в методе:

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

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



        const char *sql = "select a from a_table";
        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.aString = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt,0)];
                coffeeObj.isDirty = NO;
                [appDelegate.aArray addObject:coffeeObj.aString];


                [coffeeObj release];
            }
        }
    }
    else
        sqlite3_close(database); 
}

Когда в db есть строка, она работает нормально, но когда в ней нет строк, она просто падает.

Что мне нужно знать, так это как мне обработать мой код, чтобы он работал правильно, когда в БД нет строки.
Что я должен добавить / изменить в своем коде для правильного поведения, когда в БД нет строк?

Привет

Ответы [ 2 ]

1 голос
/ 07 февраля 2014

Я знаю, что это очень старый вопрос, но я решил эту проблему сам и предложил очень простой способ решения этой проблемы Надеюсь, что это может помочь другим посетителям

В вашем коде

Coffee *coffeeObj = [[Coffee alloc] initWithPrimaryKey:primaryKey];
coffeeObj.aString = [self checkNullForSQLStatmentColoumn:sqlite3_column_text(selectstmt, 0)];



-(NSString *) checkNullForSQLStatmentColoumn : (const unsigned char *) coloumn{
    if(coloumn)
    {
        return [NSString stringWithUTF8String:(const char *)coloumn];
    }
    return @"";
}
0 голосов
/ 17 октября 2010

Попробуйте это: проверить, если что-то не является NSNull типа if((NSNull *)YourResource != [NSNull null])

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