kaillera 发表于 2012-4-5 13:32:52

请教mush访问mysql时出现的问题

本帖最后由 kaillera 于 2012-4-5 04:48 PM 编辑

-- 载入 ODBC 外部扩展库
assert (package.loadlib ("odbc.dll", "luaopen_luasqlodbc")) ()

-- 创建环境对象
env = assert (luasql.odbc())

-- 连接数据库
con = assert (env:connect ("DSN",   -- DSN 名称
                           "user",      -- 用户名
                           "pwd"))-- 密码

-- 删除数据库中的 players 数据表
assert (con:execute"DROP TABLE players")

-- 创建 players 数据表
assert (con:execute[[
CREATE TABLE players(
    namevarchar(50),
    class varchar(50)
)
]])


-- 添加一些记录
list = {
{name="Nick Gammon", class="mage",},
{name="David Haley", class="warrior",},
{name="Shadowfyr", class="priest",}
}

for i, p in pairs (list) do
assert (con:execute(string.format([[
    INSERT INTO players
    VALUES ('%s', '%s')]], p.name, p.class)
))
end-- for loop

-- 执行一个查询语句, 返回游标对象
cur = assert(con:execute("SELECT * from players"))
-- 打印结果中的所有记录
row = cur:fetch ({}, 'a')--此处游标对象返回nil
while row do
print ("\n------ 新纪录 ---------\n")
table.foreach (row, print)

-- 重复使用这个表, 以节省资源
row = cur:fetch (row, 'a')
end-- while loop
-- 关闭和数据库有关的所有对象
cur:close()
con:close()
env:close()向table写入数据都是正常的,为啥41行读取的时候游标对象返回值为nil呢?

北大侠客行MUD,中国最好的MUD

littleknife 发表于 2012-4-5 18:03:49

本帖最后由 littleknife 于 2012-4-5 06:05 PM 编辑

我重来不用odbc,都是直接用DatabaseOpen ("db", GetInfo (67) .. "pkuxkxmap.db", 6)
local sql="SELECT MUD_Entrance.roomno,MUD_Entrance.direction,MUD_Entrance.linkroomno,MUD_Room.roomtype from MUD_Entrance,MUD_Room where MUD_Room.roomno=MUD_Entrance.roomno and linkroomno=" ..linkroomno
   --print(sql)
   DatabasePrepare ("db", sql)
   rc = DatabaseStep ("db")
   while rc == 100 do
....
rc = DatabaseStep ("db")
   end
   DatabaseFinalize ("db")

页: [1]
查看完整版本: 请教mush访问mysql时出现的问题