2

我使用以下查询向我的一个数据库表中新添加了一列。

alter table 'user' add column 'IsMarried' BOOL default 'false';

数据库更新完成后,用户“jhon”在数据库中的 IsMarried 状态为“真”。

然后我使用Objective C编写了一个sql查询来检索jhon的已婚状态,如下所示。

BOOL married = [results boolForColumn:@"IsMarried"];

我的问题是布尔变量“已婚”总是返回假;

然后我在代码中添加以下行以检查是否正确

NSString *strMarried = [results stringForColumn:@"IsPwdProtected"];

然后 strMarried 为 jhon 返回“真”。有人可以告诉我如何使用 boolForColumn 方法检索布尔值

4

3 回答 3

1

SQLite 不支持 BOOL,您必须坚持使用整数(0 和 1)分别表示 false 和 true。更多信息在这里: SQLite 中有布尔文字吗?

我目前不在 Mac 前,所以我无法对此进行测试,但我想以下内容会让你得到你想要的:

alter table 'user' add column 'IsMarried' INTEGER default 0;

如果您随后将用户“jhon”更新为已婚状态为 1,我怀疑您的调用boolForColumn将返回 true。

于 2013-05-09T13:30:40.730 回答
0

SQLite 没有单独的布尔存储类。相反,布尔值存储为整数 0(假)和 1(真)。

所以你可以使用下面的代码

NSString *boolString = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)];

BOOL married = [boolString boolValue];
于 2013-05-09T13:42:03.790 回答
-1

'false' 和 'true' 是字符串。

于 2013-05-09T13:28:45.887 回答