我正在做一个电晕项目,我一直在尝试将2个文本框值插入我的sqlite数据库。我无法做到这一点并继续收到错误“尝试连接全局'q2'(表值)”下面是错误的图片。
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行
答案 0 :(得分:2)
您正在创建对象q1
和q2
(表示为表格),但随后尝试将其值连接为字符串:
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.text
和q2.text
应该适合您。