我现在有一个应用程序Live和在应用程序中我使用sqlite表来存储游戏高分。然后当我需要添加随机播放功能时,我首先检查列是否存在,在表中添加了一个列。
当前代码
local function setupDatabase()
local dbPath = system.pathForFile("appInfo.db3", system.DocumentsDirectory)
local db = sqlite3.open(dbPath)
local playerSetup = [[
CREATE TABLE playerInfo(id INTEGER PRIMARY KEY autoincrement, highscore);
INSERT INTO playerInfo VALUES(NULL, '0');
]]
db:exec(playerSetup)
if not dbColumnExists( db, "playerInfo", "shuffles") then
local sql = "alter table playerInfo add column shuffles"
db:exec(sql)
db:close()
M.shuffles = 3 -- Set to default
M.savePlayerInfo()
else
db:close()
end
end
setupDatabase()
现在我想添加一个保存分数功能,这是我的新代码:
local function setupDatabase()
local dbPath = system.pathForFile("appInfo.db3", system.DocumentsDirectory)
local db = sqlite3.open(dbPath)
local playerSetup = [[
CREATE TABLE playerInfo(id INTEGER PRIMARY KEY autoincrement, highscore);
INSERT INTO playerInfo VALUES(NULL, '0');
]]
db:exec(playerSetup)
if not dbColumnExists( db, "playerInfo", "shuffles") then
local sql = "alter table playerInfo add column shuffles"
db:exec(sql)
--db:close()
M.shuffles = 3 -- Set to default
M.savePlayerInfo()
end
if not dbColumnExists( db, "playerInfo", "startscore") then
local sql = "alter table playerInfo add column startscore"
db:exec(sql)
M.savePlayerInfo()
M.saveScore()
end
if not dbColumnExists( db, "playerInfo", "savecount") then
local sql = "alter table playerInfo add column savecount"
db:exec(sql)
M.savecount = 3
M.savePlayerInfo()
end
db:close()
end
setupDatabase()
问题面临:
我现在面临的问题是当有人安装LIVE应用程序并购买shuffle时,可以说shuffle有10个学分,然后安装新的更新,shuffle的10个学分被淘汰。
有没有更好的方法来确保我在数据库中保留现有的随机播放信用?
由于
加载和保存数据
M.loadPlayerInfo = function()
local dbPath = system.pathForFile("appInfo.db3", system.DocumentsDirectory)
local db = sqlite3.open(dbPath)
for row in db:nrows("SELECT * FROM playerInfo WHERE id = 1") do
M.highscore = tonumber(row.highscore)
M.shuffles = tonumber(row.shuffles)
M.startscore = tonumber(row.startscore)
M.savecount = tonumber(row.savecount)
end
db:close()
end
M.savePlayerInfo = function()
local dbPath = system.pathForFile("appInfo.db3", system.DocumentsDirectory)
local db = sqlite3.open(dbPath)
local update = "UPDATE playerInfo SET highscore='" .. M.highscore .."', shuffles='" .. M.shuffles .. "', savecount='" .. M.savecount .. "' WHERE id=1"
db:exec(update)
db:close()
end