sqlite3_column_text在数据库中有数据时返回NULL

3

我的数据库定义如下:

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

然后在代码中,我试图将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];
}

问题在于我在 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'

*首次抛出时的调用堆栈:

我知道我正在获取数据,因为在终端执行原始 SQL 会返回 2 行。请问有人能告诉我为什么数据返回为 NULL 吗?

1个回答

5

你说得完全正确。有没有一种方法可以查看编译后的SQL查询(数据库所看到的方式)? - Cocoa Dev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接