這是我在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