что не так с SQL-операторов sqlite3_column_text? - PullRequest
3 голосов
/ 19 апреля 2010
if(sqlite3_open([databasePath UTF8String], & database) == SQLITE_OK) {
    NSLog(@"DB OPENED");
    // Setup the SQL Statement and compile it for faster access
    const char *sqlStatement ="select name from Medicine";

    sqlite3_stmt *compiledStatement;

    int result = sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, nil); 
    NSLog(@"RESULT %d", result);

    if(result == SQLITE_OK) {
        NSLog(@"RESULT IS OK...");

        // Loop through the results and add them to the feeds array
        while(sqlite3_step(compiledStatement) == SQLITE_ROW) {
            // Read the data from the result row
            NSLog(@"WHILE IS OK");

            **araci = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];**

            NSLog(@"Data read");


            NSLog(@"wow: %",araci);


        }//while 
    }//if sqlite_prepare v2
    // Release the compiled statement from memory
    sqlite3_finalize(compiledStatement);
    NSLog(@"compiled stmnt finalized..");
}
sqlite3_close(database);
NSLog(@"MA_DB CLOSED");

Вопросы * * 1002 1) Все хорошо, пока жирный код. когда я запускаю приложение, выдает исключение ниже. У меня есть одна таблица и одна строка в моей базе данных относительно, id (целое число), имя (varchar), desc (varchar) (я создал свою таблицу с помощью SQLite Manager) 2-) Что такое тип текста в SQLite Manager? Это NSString? Также, как я могу поместить строковые значения (в таблице) в NSMutableArray? (У меня действительно есть трудности в конвертации.) *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** +[NSString stringWithUTF8String:]: NULL cString'

Ответы [ 2 ]

4 голосов
/ 30 января 2011

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


char *localityChars =  (char *)sqlite3_column_text(init_statement, 12);

if (localityChars ==null)
     self.Locality = nil;
else
     self.Locality = [NSString stringWithUTF8String: localityChars];
2 голосов
/ 19 апреля 2010

sqlite3_column_text вернет нулевой указатель, когда столбец равен NULL. Вы должны проверить это.

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