请教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 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]