北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 3506|回复: 1

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

[复制链接]
发表于 2012-4-5 13:32:52 | 显示全部楼层 |阅读模式
本帖最后由 kaillera 于 2012-4-5 04:48 PM 编辑
  1. -- 载入 ODBC 外部扩展库
  2. assert (package.loadlib ("odbc.dll", "luaopen_luasqlodbc")) ()

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

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

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

  11. -- 创建 players 数据表
  12. assert (con:execute[[
  13.   CREATE TABLE players(
  14.     name  varchar(50),
  15.     class varchar(50)
  16.   )
  17. ]])


  18. -- 添加一些记录
  19. list = {
  20.   {name="Nick Gammon", class="mage",},
  21.   {name="David Haley", class="warrior",},
  22.   {name="Shadowfyr", class="priest",}
  23. }

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

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

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

北大侠客行MUD,中国最好的MUD
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-4-5 18:03:49 | 显示全部楼层
本帖最后由 littleknife 于 2012-4-5 06:05 PM 编辑

我重来不用odbc,都是直接用
  1. DatabaseOpen ("db", GetInfo (67) .. "pkuxkxmap.db", 6)
  2. 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
  3.    --print(sql)
  4.    DatabasePrepare ("db", sql)
  5.    rc = DatabaseStep ("db")
  6.    while rc == 100 do
  7. ....
  8.   rc = DatabaseStep ("db")
  9.    end
  10.    DatabaseFinalize ("db")

复制代码
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-17 09:53 AM , Processed in 0.013099 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表