从sqlite数据库返回lua中的数组
如何在lua中从sqlite数据库返回数组 我这里有一个相同的代码:从sqlite数据库返回lua中的数组,lua,Lua,如何在lua中从sqlite数据库返回数组 我这里有一个相同的代码: function getMoveName() tempMoveName = {} for row in db:nrows("SELECT * FROM movetable") do tempMoveName = row.movename .. " " .. row.totalcubicfeet .. " " .. row.totalitem .. "\n" end return
function getMoveName()
tempMoveName = {}
for row in db:nrows("SELECT * FROM movetable") do
tempMoveName = row.movename .. " " .. row.totalcubicfeet .. " " .. row.totalitem .. "\n"
end
return tempMoveName
end
它将返回数据库的内容,然后使用以下代码行打印内容:
local displaymovenames = mydatabase.getMoveName()
print ( displaymovenames )
但是,它只返回最后一个数据,而不是它的全部内容。您所做的是针对每一行,您只需将行数据存储在变量tempMoveName中,从而覆盖以前的值 您需要将行数据添加到表tempMoveName
function getMoveName()
tempMoveName = {}
for row in db:nrows("SELECT * FROM movetable") do
local rowData = row.movename .. " " .. row.totalcubicfeet.." "..row.totalitem.."\n"
tempMoveName[#tempMoveName+1] = rowData
end
return tempMoveName
end
编辑
要访问表元素,必须执行以下操作
for i=1,#tempMoveName do
print(tempMoveName[i])
end
请注意,#tempMoveName
给出了表格的长度(即表格中的元素数量)
另外,如果你打算在Lua中进行大量编码,我建议你掌握表的基本知识,因为cos表是Lua的主要数据类型。数组、列表、字典、类和几乎所有东西都是通过表实现的。这是一个开始 这与SQL或数据库无关;这是基本的Lua元素 这: 创建一个表并将该表存储到名为
tempMoveName
的(全局)变量中
这:
通过连接其他字符串(不要忘记string.format
)创建一个大字符串,并将其存储在名为tempMoveName
的(全局)变量中
注意我说的:“将其存储在变量中”。不是“在变量中存储的表中”
这与这样做没有什么不同:
tempMoveName = 1
tempMoveName = "foo"
这不会以某种方式将字符串与整数组合在一起tempMoveName
保持1
,然后它被替换为“foo”
桌子并不特别;他们的价值观就像Lua中的其他东西一样。变量保存值。所以,如果您更改了存储在变量中的值,那么您已经更改了存储在变量中的值。您没有影响值本身,只影响它存储的位置
如果在变量中存储了一个表,并且希望构建一个数组,那么应该访问表中的元素,而不是变量本身。这是以通常的方式完成的:
tempMoveName[#tempMoveName + 1] = row.movename .. " " .. row.totalcubicfeet .. " " .. row.totalitem .. "\n"
或者,您可以使用表。插入:
table.insert(tempMoveName, row.movename .. " " .. row.totalcubicfeet .. " " .. row.totalitem .. "\n")
最后,如果tempMoveName
是临时的(顾名思义),那么您应该将其声明为local
变量。它只打印这个表:0x10a6516e0
它只打印这个表:0x10a6516e0
谢谢,先生,好的会这样做的…:)
tempMoveName[#tempMoveName + 1] = row.movename .. " " .. row.totalcubicfeet .. " " .. row.totalitem .. "\n"
table.insert(tempMoveName, row.movename .. " " .. row.totalcubicfeet .. " " .. row.totalitem .. "\n")