|
本帖最后由 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(
- name varchar(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 |
|