如何在corona sdk中使用lua程序创建数据库和表?

时间:2011-06-13 11:13:08

标签: sqlite lua corona

我是lua编程的新手,我不知道如何创建数据库,在那里创建表并检索它。

我想第一次创建数据库和表。我需要将值插入表中,我想从表中检索列表。

我不知道如何开始,因为我是lua编程的初学者。你们可以帮助我或建议任何教程。

请帮帮我

谢谢你, Madan Mohan

3 个答案:

答案 0 :(得分:0)

我已经关注了http://wiki.garrysmod.com/?title=LUA:SQLite_Tutorial sql lite& Lua教程,很不错。在开始之前,您需要将lua dlls / modules安装或复制到系统路径中,以便lua db模块能够找到数据库。

LuaSQL是客户端库的不错选择..

http://www.capricorn76.com/c76_scriptengine_docsdk/luasql/index.html

答案 1 :(得分:0)

你在标签中提到了Corona,尽管在你的问题中没有提到。这有所不同,因为Corona内置了对SQLite的支持,但没有任何其他类型的数据库。

他们网站上有关于如何使用数据库功能的文档:http://developer.anscamobile.com/content/data-storage

请注意,他们的示例都使用数据库命令的[[]]语法,但我发现它看起来更好,并且更容易理解使用“”

答案 2 :(得分:0)

这是一个老问题,但我会解释我这样做的方式:

  1. 下载Sqlite浏览器(https://github.com/sqlitebrowser/sqlitebrowser/releases
  2. 创建一个空数据库
  3. 将其放入项目文件夹
  4. 在您的代码中将其复制到system.DocumentsDirectory:

    local function copyDatabase()
        util.copyFile( "model.db", system.ResourceDirectory, db_name, system.DocumentsDirectory, false )
    end
    
  5. <强> util.copyFile:

    function M.copyFile( srcName, srcPath, dstName, dstPath, overwrite )
    
    local results = false
    
    local srcPath = M.doesFileExist( srcName, srcPath )
    
    if ( srcPath == false ) then
        return nil  -- nil = source file not found
    end
    
    --check to see if destination file already exists
    if not ( overwrite ) then
        if ( M.doesFileExist( dstName, dstPath ) ) then
            return 1  -- 1 = file already exists (dont overwrite)
        end
    end
    
    --copy the source file to the destination file
    local rfilePath = system.pathForFile( srcName, srcPath )
    local wfilePath = system.pathForFile( dstName, dstPath )
    
    local rfh = io.open( rfilePath, "rb" )
    local wfh = io.open( wfilePath, "wb" )
    
    if not ( wfh ) then
        print( "writeFileName open error!" )
        return false
    else
        --read the file from 'system.ResourceDirectory' and write to the destination directory
        local data = rfh:read( "*a" )
        if not ( data ) then
            print( "read error!" )
            return false
        else
            if not ( wfh:write( data ) ) then
                print( "write error!" )
                return false
            end
        end
    end
    
    results = 2  -- 2 = file copied successfully!
    
    --clean up file handles
    rfh:close()
    wfh:close()
    
    return results
    end
    

    要打开数据库:

    local function openDatabase()
        local path = system.pathForFile( db_name, system.DocumentsDirectory )
        db = sqlite3.open( path ) 
    end
    

    创建一些表格

    local function createTables()
        -- I dont create a Primary Key manually as Sqlite creates ROWID for us
        db:exec( "CREATE TABLE IF NOT EXISTS categories (category TEXT, description TEXT, icon_location TEXT )" )
    end
    

    您可以使用db:exec(db是您的本地变量到数据库)轻松更新和插入记录。如果查询完成且没有任何错误,db:exec返回0。