Lua - SQLite3没有向其数据库中插入行。

我正在尝试为 Android 手机构建一个支出应用程序,并且需要一种方法来显示支出。该计划(对于我当前的步骤)是允许用户查看他们的支出。我想要展示一个类似日历的屏幕,如果某天至少有一笔支出,则使用不同的颜色来显示该按钮。

我的问题在于将信息插入到sqlite3表中。以下是我的代码:

require "sqlite3"

--创建路径
local path = system.pathForFile("expenses.sqlite", system.DocumentsDirectory )
file = io.open( path, "r" )
if( file == nil )then
    -- 不存在,因此从资源目录中复制它
    pathSource = system.pathForFile( "expenses.sqlite", system.ResourceDirectory )
    fileSource = io.open( pathSource, "r" )
    contentsSource = fileSource:read( "*a" )
    --将目标文件写入文档目录
    pathDest = system.pathForFile( "expenses.sqlite", system.DocumentsDirectory )
    fileDest = io.open( pathDest, "w" )
    fileDest:write( contentsSource )
     -- 完成
    io.close( fileSource )
    io.close( fileDest )
end
db = sqlite3.open( path )

--设置数据表(如果不存在)
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”)行未执行,这告诉我该表中没有行。

另外,如果我说db:nrows(“SELECT year,month,day FROM expenses”),sqlite3会给我一个错误,说没有年份列。我的总体猜测是我没有正确地将信息插入到数据表中,但我已经尝试了我能想到的一切。 有谁可以帮忙吗?

点赞
用户2230073
用户2230073

我发现当前版本的sqlite3和我电脑上的不兼容。无论如何,我修改了几行代码,现在程序可以完美运行。我修改了选取语句和for循环。

        --SQLite语句
        local check = "SELECT DISTINCT year, month, day FROM expenses WHERE year = '"..dateTable[i].year.."' AND month = '"..dateTable[i].month.."' AND day = '"..dateTable[i].day.."'"

        --检查是否存在给定日期的支出
        --如果没有,则for循环不会被执行
        for row in db:nrows(check) do
            flag = row.day
        end

然后,我继续创建一个按钮,如果日期与flag变量相等,则显示不同颜色。

这一切都在另一个for循环中完成,它创建了每个dateTable[i]

2013-04-10 01:24:55