sqlite3_column_text возвращает NULL при наличии данных в базе данных - PullRequest
3 голосов
/ 08 февраля 2011

Моя база данных определяется следующим образом:

CREATE TABLE [problems] (
[p_id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
[problem_name] VARCHAR(255) NOT NULL, 
[mixed_t1] INT NOT NULL, 
[mixed_t2] INT NOT NULL, 
[mixed_flair] INT, 
[mixed_gre] INT, 
[mixed_diffusion] INT, 
[mixed_adc] INT, 
[fat_sat_post_t1] INT)

В моем коде я пытаюсь выполнить запрос SQL, который выглядит как

SELECT problem_name from problems WHERE mixed_t1=0

Затем в коде яя пытаюсь присвоить имя_проблемы NSString, а затем добавить NSString к NUSMutableArray

if(sqlite3_step(statement) == SQLITE_ROW)
{

    NSString *problemName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 1)];

    [dataSet addObject:problemName];

    [problemName release];
}

Проблема в том, что я сбой в NSString * имя_проблемы

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

Current language:  auto; currently objective-c
2011-02-08 08:54:29.035 RadAppz[1332:207] *** Terminating app due to uncaught exception    'NSInvalidArgumentException', reason: '*** +[NSString stringWithUTF8String:]: NULL cString'

* Стек вызовов при первом броске:

Я знаю, что получаю данные, потому что выполнение RAW SQL в Terminal возвращает 2 строки.Может кто-нибудь сказать мне, почему данные возвращаются как NULL?

1 Ответ

5 голосов
/ 08 февраля 2011

Я считаю, что ваша проблема в том, что вы проверяете второй столбец, а не первый.Обратите внимание, что определение для sqlite3_column_text гласит, что самый левый столбец - это столбец 0.

http://www.sqlite.org/capi3ref.html#sqlite3_column_blob

...