проблема sqlite3_prepare_v2 - PullRequest
       7

проблема sqlite3_prepare_v2

2 голосов
/ 20 июля 2010

Я получаю следующую ошибку:

* Завершение приложения из-за необработанного исключения 'NSInvalidArgumentException', причина: '* + [NSString stringWithUTF8String:]: NULL cString'

в строке кода ниже:

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

Я не уверен, что здесь происходит, столбец, на который я ссылаюсь в моем операторе SQL, содержит данные.Полный код ниже.

// Open the database from the users filessytem
    if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) 
    {
        // Setup the SQL Statement and compile it for faster access
        const char *sqlStatement = "select ZROUTE_NAME from ZROUTE";
        sqlite3_stmt *compiledStatement;
        if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) 
        {
            // Loop through the results and add them to the Route Name array
            while(sqlite3_step(compiledStatement) == SQLITE_ROW) 
            {
                // Read the data from the result row
                NSString *aName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];

                // Add the animal object to the animals Array
                //[list addObject:animal];              
                [list addObject:aName];             
                //[animal release];
            }
        }
        else 
        {
            NSLog(@"Error: failed to select details from database with message '%s'.", sqlite3_errmsg(database));
        }

        // Release the compiled statement from memory
        sqlite3_finalize(compiledStatement);        
    }
    sqlite3_close(database);

Ответы [ 2 ]

4 голосов
/ 20 июля 2010

Аааа: p - Я верю - Если вы выполните следующее заявление, у вас не будет проблем.

Это никогда не вызовет исключения, как вы упомянули - * Завершение приложения из-за необработанного исключения 'NSInvalidArgumentException', причина: '* + [NSString stringWithUTF8String:]: NULL cString'

Но помните - когда есть пустое значение - ваша строка будет иметь (null) значение

NSString *bName=[NSString stringWithFormat: @"%s",(char *)sqlite3_column_text(compiledStmt, 0)];

Вот и все.UpVote, если было сочтено полезным.:)

3 голосов
/ 20 июля 2010

Обработка условия указателя NULL для оператора

if((char*)sqlite3_column_text(compiledStatement, 1) != NULL)
{
      NSString *aName = [NSString stringWithUTF8String(char*)sqlite3_column_text(compiledStatement, 1)];
}

Это решит вашу проблему.

Спасибо,
Джим.

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