尝试连接全局'q2'(表值)电晕错误

时间:2018-01-25 03:47:49

标签: sqlite lua corona

我正在做一个电晕项目,我一直在尝试将2个文本框值插入我的sqlite数据库。我无法做到这一点并继续收到错误“尝试连接全局'q2'(表值)”下面是错误的图片。 ERROR MESSAGE FROM CORONA

 local widget = require "widget"
 local sqlite3 = require( "sqlite3" )
 local path = system.pathForFile( "data.db", system.DocumentsDirectory )
 local db = sqlite3.open( path )
 local tablesetup = [[CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY, q1, q2);]]
print( tablesetup )
db:exec( tablesetup )

_G.numericField = q1
local function textListener( event )

if ( event.phase == "began" ) then
    -- User begins editing "numericField"
end
end

 -- Create text field
q1 = native.newTextField( 290, 150, 50, 30 )
q1.inputType = "number"
q1:addEventListener( "userInput", textListener )


 _G.numericField1 = q2
local function textListener( event )

if ( event.phase == "began" ) then
    -- User begins editing "numericField"
end
end

-- Create text field
q2 = native.newTextField( 290, 50, 50, 30 )
q2.inputType = "number"
q2:addEventListener( "userInput", textListener )

saveData = function ( event )
   --textString = q1.text
   --textString = q2.text
  -- LINE 39 IS BELOW
local tablefill = [[INSERT INTO test VALUES (NULL, ']]..q1..[[',']]..q2..[['); ]]

    db:exec( tablefill )
    end

  savebutton = widget.newButton {
    left = 60,
    top = 250,
    default = "buttonGreen.png",
    over = "buttonGreenOver.png",
    label = "Update",
    embose = true,
    onRelease = saveData
    }


有人能提供帮助吗?提前谢谢!

更新(第36-41行)

saveData = function ( event )
q1.text = "" 
q2.text = "" 
local tablefill = [[INSERT INTO test VALUES (NULL, ']]..q1..[[',']]..q2..[['); ]]
db:exec( tablefill )
end

现在我收到了同样的错误,但这次是在第40行

2 个答案:

答案 0 :(得分:2)

您正在创建对象q1q2(表示为表格),但随后尝试将其值连接为字符串:

q1 = native.newTextField( 290, 150, 50, 30 )
...
q2 = native.newTextField( 290, 50, 50, 30 )
...
local tablefill = [[INSERT INTO test VALUES (NULL, ']]..q1..[[',']]..q2..[['); ]]

我不确定你到底想要做什么,但这不会起作用,因为表值不能以这种方式连接。

假设q1.text为您提供了您正在寻找的价值,那么这样的事情应该有效:

local tablefill = [[INSERT INTO test VALUES (NULL, ']]..(q1.text or "")
  ..[[',']]..(q2.text or "")..[['); ]]

请注意,连接值以形成SQl查询会使其容易受到SQL injection attack的攻击;你最好使用占位符。

答案 1 :(得分:1)

获取TextField对象使用textField.text的值。它返回表示本机文本输入字段内容的字符串。 说明q1.textq2.text应该适合您。