2013-11-21 46 views
2

我在找到一个优雅的解决方案时遇到了一些麻烦。我使用具有SQLite数据库的Corona创建应用程序。 db中的一列是布尔值。我知道SQLite使用10truefalse。我也知道,Lua评估一切为真,不是falsenilLua中的SQLite布尔值

是否有某种方式来直接判断一个SQLite布尔为真或假在Lua无需做:

if(myVariable == 1) 

我喜欢这种感觉,因为我可以击败具有表中的布尔专栏的目的将myVariable与任何东西进行比较。我想只能写:

if(myVariable) 

有没有办法做到这一点?现在我认为我唯一的选择是将1存储为true,并在db中保留为假的null

回答

2

SQLite没有单独的布尔存储类。所以,当Lua从数据库中读取列时,它不能确定该值是布尔值而不是数字。

顺便说一句,当lsqlite3存储使用一个Lua布尔的bind方法之一,它确实注意,Lua的打算存储布尔值,并且将该值转换为整数0(false)和1(true)。

既然你是在Lua编程,你将不得不接受Lua将数字视为数字而不是布尔值。我的建议是,在你从数据库中读取数据后,你将Lua中的数字转换为布尔值。