我正在尝试为Android手机构建费用应用,我需要一种方法来显示费用。该计划(我目前的步骤)是允许用户查看他们的费用。我想要显示一个类似日历的屏幕,如果一天至少有一笔费用,那么为按钮使用不同的颜色。
我的问题是在sqlite3
表中插入信息。这是我的代码:
require "sqlite3"
--create path
local path = system.pathForFile("expenses.sqlite", system.DocumentsDirectory )
file = io.open( path, "r" )
if( file == nil )then
-- Doesn't Already Exist, So Copy it In From Resource Directory
pathSource = system.pathForFile( "expenses.sqlite", system.ResourceDirectory )
fileSource = io.open( pathSource, "r" )
contentsSource = fileSource:read( "*a" )
--Write Destination File in Documents Directory
pathDest = system.pathForFile( "expenses.sqlite", system.DocumentsDirectory )
fileDest = io.open( pathDest, "w" )
fileDest:write( contentsSource )
-- Done
io.close( fileSource )
io.close( fileDest )
end
db = sqlite3.open( path )
--setup the table if it doesn't exist
local tableSetup = [[CREATE TABLE IF NOT EXISTS expenses (id INTEGER PRIMARY KEY, amount, description, year, month, day);]]
db:exec(tableSetup)
local tableFill = [[INSERT INTO expenses VALUES (NULL,']] .. 15 .. [[',']] .. "Groceries" .. [[',']] .. 2013 .. [[',']] .. 4 .. [[',']] .. 8 ..[[');]]
db:exec(tableFill)
for row in db:nrows("SELECT * FROM expenses") do
print("hi")
if row.year == dateTable[i].year and row.month == dateTable[i].month and row.day == dateTable[i].day then
flag = dateTabel[i].day
end
end
我到处看看我是否使用了错误的sqlite3命令错误,因为我对它不是很熟悉,但我尝试了所有我发现的东西并没有用。 print("hi")
line没有执行,因此告诉我表中没有行。
另外,如果我说db:nrows("SELECT year, month, day FROM expenses")
,sqlite3会给我一个错误,说明没有年级列。我的总体猜测是我没有正确地将信息插入表中,但我已经尝试了我能想到的一切。有人可以帮忙吗?
答案 0 :(得分:0)
我发现当前版本的sqlite3和我在计算机上的版本存在问题。无论如何,我改变了几行,它完美无缺。我更改了select语句和for循环。
--sqlite statement
local check = "SELECT DISTINCT year, month, day FROM expenses WHERE year = '"..dateTable[i].year.."' AND month = '"..dateTable[i].month.."' AND day = '"..dateTable[i].day.."'"
--check if there is at least one expense for a given day
--if there isn't one, the for loop won't execute
for row in db:nrows(check) do
flag = row.day
end
然后,如果日期数等于标志变量,我会继续创建一个颜色不同的按钮。
这都在另一个for循环中,它创建了每个dateTable[i]
。