【问题标题】:Sqlite result set contain a null valueSqlite 结果集包含一个空值
【发布时间】:2013-11-06 22:37:49
【问题描述】:

我从 sqlite 得到一个结果集,看起来像这样:

Null, 23, 34, 45(被(比如说)4 项返回)

null 值是正确的 - 但是当我尝试使用以下代码将其添加到 Objective-c 中的数组时,我收到错误 - Null cstring - 这是我的代码:

[数组 addObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 0)]];

在将 null 添加到数组并将其替换为 0 之前,我尝试对 null 进行了失败的测试,但到目前为止还没有成功。

有人可以帮我处理空值,这样我就可以在数组中添加一个零。

感谢您的帮助。

【问题讨论】:

  • 您不能将nil 添加到 NSMutableArray。如果你尝试,你会得到一个讨厌的例外。当然,你可以添加一个长度为零的 NSString,或者一个 NSNull 对象。
  • 谢谢你 - 但在我尝试将它添加到数组之前,测试空值是否存在的最佳方法是什么。
  • if (value == null)执行 stringWithUTF8String 之前执行此操作。

标签: ios sqlite


【解决方案1】:

正如 Hot Licks 所说,检查返回值并添加从中创建的字符串,或者添加 [NSNull null]

const unsigned char *column0 = sqlite3_column_text(statement, 0);
if (column0)
    [array addObject:[NSString stringWithUTF8String:(const char *)column0]];
else
    [array addObject:[NSNull null]];

【讨论】:

  • 这正是我所需要的。谢谢。
【解决方案2】:

按照建议处理 null 是一个不错的选择。

您还可以修改查询以使用 CAST(column_name AS TEXT) 强制列始终为 TEXT,或使用 COALESCE(column_name, '') 强制 NULL 为空字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多