corona sdks - 为什么我的数据库更新没有计数?

时间:2014-12-17 04:04:07

标签: lua corona

我在corona sdk中的数据库似乎有问题。我希望每次玩家玩游戏时都存储游戏次数。我的项目没有gamecene,只能通过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 ) --Create it now.
db:close() --Then close the database

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() -- Separate db which is working fine 
utils.loadAppInfo()

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

1 个答案:

答案 0 :(得分:1)

你的SQL语句正在做所有这些。您当前的sql每次调用时都会创建一个表。试试这个:

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

我想这句话非常自我解释:)