0

如果数据库表不存在,我有以下代码来创建数据库表,然后检查当前用户是否在数据库中。我通过选择 id 等于他们的设备 id 的用户来做到这一点。现在的代码应该打印 hello world 然后转到表单。但是,当我运行代码时,没有任何反应,没有错误,也没有打印语句。任何想法为什么会发生这种情况?

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
4

1 回答 1

3

nrows返回查询产生的所有行。如果在查询中没有生成任何行(例如,因为找不到您要查找的项目),那么循环将不会开始。因为没有与查询匹配的行。

如果您要检测查询是否成功,则需要实际检查。

另外,请停止使用字符串连接构建查询。了解如何使用带有适当值绑定的预准备语句。它更干净,并且不会让您受到 SQL 注入攻击。

于 2012-05-27T20:02:07.360 回答