这是我在stackoverflow的第一个问题。 我正在与科罗娜和我遇到一个问题访问SQLdb(我是一个SQL菜鸟)Corona Lua SQLite
我试图访问并返回我已经存储在数据库中的值。 下面是一些代码示例:
print("---------------- How I Create New Player Save Data")
local entry = [[CREATE TABLE IF NOT EXISTS playerData (key STRING PRIMARY KEY, content INTEGER);]]
db:exec(entry)
entry = [[INSERT INTO playerData VALUES ("LastLoginTime", 0);]]
db:exec(entry)
entry = [[INSERT INTO playerData VALUES ("Credits", 1000);]]
db:exec(entry)
entry = [[INSERT INTO playerData VALUES ("Level", 1);]]
db:exec(entry)
现在此功能,它会在数据库(我通过“DBNAME”)打印的一切:
--print all the table contents
for row in db:nrows("SELECT * FROM "..dbName) do
local text = row.key..": "..row.content
end
这不起作用,则返回“ 0:
local grabCredits = "SELECT content FROM playerData WHERE key='Credits'"
local credits = db:exec(grabCredits)
print("-- value: "..credits)
无论这是否也返回 '0':
local grabCredits = "SELECT key FROM playerData WHERE content>=10"
local credits = db:exec(grabCredits)
print("-- value: "..credits)
我不明白我在做什么错。也许我需要使用除exec()以外的其他db函数调用。我意识到每次我想访问单个条目时都可以遍历数据库,但这看起来效率不高。
任何帮助,非常感谢。
所以,只是要清楚。当我想要访问表中的条目时,我必须总是遍历整个数据库?没有其他方法来获取条目? – zecmo 2012-07-14 19:55:42
是的,有点儿。你可以做单独的准备步骤,并在语句中完成/重置调用,但是循环并没有太多开销,因为如果只有一个结果,它将只运行一次迭代。另外,如果你只有一个结果,当有很多时,你可以从循环中断开。 – 2012-07-14 19:59:17
很酷。我不太了解SQL来“分离(和)准备步骤并最终确定/重置语句中的调用。”但其他一切都有道理。非常感谢您的信息! – zecmo 2012-07-14 20:00:20