2013-11-21 47 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中的數字轉換爲布爾值。