9

I am making an sqlite3 test3.sql database, making table as

CREATE TABLE rest (name VARCHAR(100), price VARCHAR(100));

table is successfully created but now when I am using a method for inserting and retrieving data, then getting error,,,

The error is on line

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

the error is +[NSString stringWithUTF8String:]: NULL cString'

What is this error, how can I remove it?

3 Answers 3

29

Instead of just having

... = [NSString stringWithUTF8String:
       (char *)sqlite3_column_text(compiledStatement, 15)]

You want to use something like

... = ((char *)sqlite3_column_text(compiledStatement, 15)) ? 
      [NSString stringWithUTF8String:
       (char *)sqlite3_column_text(compiledStatement, 15)] : nil;
Sign up to request clarification or add additional context in comments.

Comments

5

After using the tenary operator to get the values from the db you have to check if the value is nil. Otherwise the program will still crash.

NSString *retrievedString = ((char *)sqlite3_column_text(statement, 15)) ? 
  [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 15)] : 
  nil;

if(retrievedString == nil){
  [allSteps addObject:@""];
} else {
  [allSteps addObject:retrievedString];
}

Comments

3

It means that sqlite3_column_text returns NULL. It returns NULL when the column is NULL.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.