2012-05-27 50 views
0

我有以下代碼來創建數據庫表,如果它尚不存在,然後檢查當前用戶是否在數據庫中。我通過選擇id等於其設備ID的用戶來完成此操作。現在的代碼應該打印hello world,然後轉到表單。但是,當我運行代碼沒有任何反應,沒有錯誤和沒有打印聲明。任何想法,爲什麼這可能會發生?Lua sqlite選擇語句

local tablesetup = [[CREATE TABLE IF NOT EXISTS User (id VARCHAR(255) PRIMARY KEY, name);]] 
    db:exec(tablesetup) 

    --Check if the user is in the database already 
    for row in db:nrows("SELECT * FROM User WHERE id = " .. "'" .. system.getInfo("deviceID") .. "'") do 
     print("hello") 
     if(row.id == nil) then 
      print("world") 
      storyboard.gotoScene("forms") 
     end 
    end 

回答

3

nrows返回由查詢產生的所有行。如果在查詢中沒有生成行(例如,因爲找不到的項目),那麼循環將不會啓動。因爲沒有與查詢匹配的行。

如果你想檢測查詢是否成功,那麼你需要真正檢查。

另外,請停止使用字符串連接構建查詢。瞭解如何使用prepared statements以及適當的value binding。它更清潔,並且不會讓您對SQL注入攻擊開放。

+0

以及我想要做的是檢查用戶是否在數據庫中。所以如果他們不在數據庫中,循環會被跳過? – ewein

+0

@ewein:是的。就像循環播放一個空列表一樣,你不會進入循環。 –