当数据库中有数据时,sqlite3_column_text返回NULL

Coc*_*Dev 3 sqlite iphone-sdk-3.0 ios4

我的数据库定义如下

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)
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我正在尝试运行看起来像的SQL查询

SELECT problem_name from problems WHERE mixed_t1=0
Run Code Online (Sandbox Code Playgroud)

然后在代码中,我试图将problem_name分配给NSString,然后将NSString添加到NUSMutableArray

if(sqlite3_step(statement) == SQLITE_ROW)
{

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

    [dataSet addObject:problemName];

    [problemName release];
}
Run Code Online (Sandbox Code Playgroud)

问题是我崩溃了NSString*problemName

我收到以下崩溃消息

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'
Run Code Online (Sandbox Code Playgroud)

*第一次投掷筹码:

我知道我正在获取数据,因为在终端中执行RAW SQL会返回2行.有人可以告诉我为什么数据被返回为NULL?

Lau*_*ack 5

我相信你的问题是你正在检查第二列,而不是第一列.请注意,sqlite3_column_text的定义指出最左边的列是列0.

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