为什么我的数据库计数没有更新?(关于Corona SDKs)

我在 corona sdk 中似乎有一个数据库问题。我想在每次玩家玩游戏时存储播放次数。我的项目没有游戏场景,只通过menu.lua 进行播放。我设置了一个高分数据库(与其他数据库分离但完全相同),它可以正常工作并且可以更新/加载数据。然而,我的播放次数数据库不起作用。

起初,当游戏再次返回菜单时,播放次数会增加1。但此后的尝试不会增加该值,就像它已经重置了一样。

Globals.lua

M.plays = 0
--------------------------
local function setupDatabase2()
    local dbPath = system.pathForFile("appInfo.db3", system.DocumentsDirectory)
    local db = sqlite3.open( dbPath )
    local tablesetup1 = [[
         CREATE TABLE played (id INTEGER PRIMARY KEY, plays);
         INSERT INTO played VALUES (NULL, '0');
    ]]
db:exec( tablesetup1 ) --现在创建它。
db:close() --然后关闭数据库。

end
setupDatabase2()

M.loadAppInfo = function()
    local dbPath = system.pathForFile("appInfo.db3", system.DocumentsDirectory)
    local db = sqlite3.open(dbPath)
    for row in db:nrows("SELECT * FROM played WHERE id = 1") do
        M.plays = tonumber(row.plays)
    end
    db:close()
end

M.saveAppInfo = function()
    local dbPath = system.pathForFile("appInfo.db3", system.DocumentsDirectory)
    local db = sqlite3.open(dbPath)
    local update = "UPDATE played SET plays='" .. M.plays .."' WHERE id=1"
    db:exec(update)
    db:close()
end

return M

menu.lua

local utils = require("helpers.globals")
local play = 0
----------------------------------------
function scene:createScene( event )
local group = self.view

utils.loadHighscoreInfo() -- 可以正常工作的单独数据库
utils.loadAppInfo()

function beginGame( event )
    timerSrc = timer.performWithDelay(400, createBlock, -1)
    Runtime:addEventListener("enterFrame", gameLoop)
    play = play +1
    utils.plays = play
    utils.saveAppInfo()
end
点赞
用户3803880
用户3803880

你的 SQL 语句正在完成所有的操作。你现在的 SQL 在每次调用时都会创建一张表。尝试一下这个:

 local tablesetup1 = [[
     CREATE TABLE IF NOT EXISTS played (id INTEGER PRIMARY KEY, plays);
     INSERT INTO played VALUES (NULL, '0');]]

我猜这个语句已经很显而易见了 :)

2014-12-17 05:55:49