在Lua中的SQLite布尔型值

我遇到了一些困难,找不到一个优雅的解决方案。我正在使用 Corona 创建一个应用程序,其中包含一个 SQLite 数据库。数据库中的一个列是布尔值。我知道 SQLite 使用 10 来表示 truefalse。我也知道 Lua 计算所有不是 falsenil 的内容为真。

在 Lua 中,有没有一种直接评估 SQLite 布尔值为真或假的方法,而不必执行:

if(myVariable == 1)

我觉得这违背了在表格中具有布尔列的目的,因为我可以将 myVariable 与任何内容进行比较。我希望只需要编写:

if(myVariable)

有什么方法可以做到这一点吗?现在,我认为我的唯一选择是将 1 存储为 true,将 false 留在数据库中作为“null”。

点赞
用户33252
用户33252

SQLite 没有单独的布尔存储类。因此,当 Lua 从数据库读取列时,它无法确定该值是布尔值还是数字。

顺便提一下,当 lsqlite3 使用 bind 方法之一存储 Lua 布尔值时,它确实会记录 Lua 想要存储布尔值,并将该值转换为整数 0 ( false)和 1 ( true)。

由于您正在使用 Lua 进行编程,您必须接受 Lua 将数字视为数字而不是布尔值这一事实。我的建议是,在从数据库读取数字后,立即在 Lua 中将它们转换为布尔值。

2013-11-21 04:21:55