can corona能够打开MySQL DB吗?

时间:2014-03-31 08:56:09

标签: database lua corona

只是想知道,如果MySQL可以在电晕或MySQL中使用db可以使用sqlite3打开 或者有什么区别如果我使用MySQL db或sqlite3 db?

1 个答案:

答案 0 :(得分:2)

Corona提供了自己的库,用于连接SQLite驱动程序,可以访问其文档here

local sqlite3 = require "sqlite3"

--Open data.db.  If the file doesn't exist it will be created
local path = system.pathForFile("data.db", system.DocumentsDirectory)
db = sqlite3.open( path )   

--Handle the applicationExit event to close the db
local function onSystemEvent( event )
    if( event.type == "applicationExit" ) then              
        db:close()
    end
end

--Setup the table if it doesn't exist
local tablesetup = [[CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY, content, content2);]]
print(tablesetup)
db:exec( tablesetup )

--Add rows with a auto index in 'id'. You don't need to specify a set of values because we're populating all of them
local testvalue = {}
testvalue[1] = 'Hello'
testvalue[2] = 'World'
testvalue[3] = 'Lua'
local tablefill =[[INSERT INTO test VALUES (NULL, ']]..testvalue[1]..[[',']]..testvalue[2]..[['); ]]
local tablefill2 =[[INSERT INTO test VALUES (NULL, ']]..testvalue[2]..[[',']]..testvalue[1]..[['); ]]
local tablefill3 =[[INSERT INTO test VALUES (NULL, ']]..testvalue[1]..[[',']]..testvalue[3]..[['); ]]
db:exec( tablefill )
db:exec( tablefill2 )
db:exec( tablefill3 )

--print the sqlite version to the terminal
print( "version " .. sqlite3.version() )

--print all the table contents
for row in db:nrows("SELECT * FROM test") do
    local text = row.content.." "..row.content2
    local t = display.newText(text, 20, 30 * row.id, null, 16)
    t:setFillColor( 1, 0, 1 )
end

--setup the system listener to catch applicationExit
Runtime:addEventListener( "system", onSystemEvent )

您还可以使用第三方库(或电池)来创建连接。常用的一个这样的库是LuaSQL

Corona社区上的一个帖子向您展示了如何建立连接using LuaSQL for MySQL servers

local luasql = require "luasql.mysql";
env = assert((luasql.mysql()), "Uh oh, couldn't load driver")
conn = assert(env:connect("database","username","password","localhost"), "Oops!!")
cur = assert (conn:execute ("SELECT * from table_1" ))
row = cur:fetch ({}, "a")
while row do
  print ("\n------ new row ---------\n")
  table.foreach (row, print)
  row = cur:fetch (row, "a")
end
cur:close()
conn:close()
env:close()