我在寻找一个优雅的解决方案时遇到了一些麻烦。我正在使用带有SQLite数据库的Corona创建一个应用程序。 db中的一列是布尔值。我知道SQLite对1
或0
使用true
或false
。我也知道Lua将所有内容评估为真,而不是false
或nil
。
有没有办法在Lua中直接将SQLite布尔值评估为true或false,而不必这样做:
if(myVariable == 1)
我觉得这样就失去了在表格中设置布尔列的目的,因为我可以将myVariable与任何东西进行比较。我想写一下:
if(myVariable)
有办法做到这一点吗?现在我认为我唯一的选择是将1存储为true,并在数据库中将{false}保留为null
。
答案 0 :(得分:2)
SQLite没有单独的布尔存储类。因此,当Lua从数据库中读取列时,它无法确定该值是否为布尔值而不是数字。
BTW,当lsqlite3
使用bind
方法之一存储Lua布尔值时, 注意Lua打算存储布尔值,并将值转换为整数0(false
)和1(true
)。
由于你是在Lua编程,你必须接受这样一个事实,即Lua将数字视为数字,而不是布尔数。我建议您在从数据库中读取数字后立即将数字转换为Lua中的布尔值。