【问题标题】:Lua sqlite Select statementLua sqlite Select 语句
【发布时间】:2012-05-27 19:48:55
【问题描述】:

如果数据库表不存在,我有以下代码来创建数据库表,然后检查当前用户是否在数据库中。我通过选择 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

【问题讨论】:

    标签: sqlite lua coronasdk


    【解决方案1】:

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

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

    另外,请停止使用字符串连接构建查询。了解如何使用 prepared statements 和正确的 value binding。它更干净,并且不会让您受到 SQL 注入攻击。

    【讨论】:

    • 好吧,我要做的是检查用户是否在数据库中。因此,如果它们不在数据库中,则将跳过循环?
    • @ewein:是的。就像你循环一个空列表一样,你不会进入循环。
    猜你喜欢
    • 1970-01-01
    • 2011-01-22
    • 2012-07-24
    • 2015-12-14
    • 2016-09-10
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多