连数据库要驱动,odbc.dll不是每个机器都有的
(lualuaforge.net/上的luasql项目,下载luasql-2.1.1-odbc-win32-lua51.zip,解压到mushclient)
目录结构
mushClient
world
lua
...
luasql
odbc.dll
建立连接
require "luasql.odbc"
env = assert (luasql.odbc())
con = assert (env:connect ("databaseName", "username", "password"))
谢谢duno啦!
呵呵,其实昨天在研究MUSHClient with SQLite,想参考一下access,没想到把duno的老底掏出来了……
如果是读文件,怎么find字符串?比如,需要通过room_desc中的关键字“络绎不绝”查询到“大驿道”这个room_name
应该没有SELECT好用吧? 读文件到内存,以数组(table)方式查找
我没有建索引,效率稍差
筛选时,先以最低筛选条件遍历整个数组筛选出结果的大致范围
然后在此范围内逐渐加强筛选条件
筛选结果有两个
一个以纯粹性为指导,最强筛选条件(如名称,描述,entry必须都符合)
一个以完备性味知道,相对减弱筛选条件(如只要名称描述符合,甚至只要名称符合) sql的东西是看到这个帖子后,回家试验得出的,俺自己没有用数据库
sql要熟悉才好用,本使对access完全不熟悉,昨天试验的时候还想当然的drop table if exists
用sql和自己查数组功能上没有差别,重要的还是熟悉,熟悉的工具成本低,效益高,赚得多,赔得少
[ 本帖最后由 duno 于 2009-5-20 07:42 PM 编辑 ] 误导duno了,sorryyct16
这个问题让duno费这么大劲,惭愧ing 终于搞明白Access怎么连接了:
下载luasql.zip,解压后连带文件夹COPY到MUSHClient目录下,
脚本里的连接方式如下:
-- load the ODBC dll
-- assert (package.loadlib ("odbc.dll", "luaopen_luasqlodbc")) ()
require "luasql.odbc"
-- create environment object
env = assert (luasql.odbc())
-- connect to data source
con = assert (env:connect ("DSN", "username", "password"))
-- do a SQL select
cur = assert (con:execute (select_str))
-- print all rows
row = cur:fetch ({})
table.foreach (row, print)
-- close everything
cur:close()
con:close()
env:close()
需要注意的是,Access本身进行“LIKE”模糊查询时使用的通配符为“*”,但在脚本里必须使用“%”替换该“*”。
Access连接需要自己设定ODBC的DSN,这点比较麻烦,不利于脚本移植,SQLite倒不用,但SQLite需要自己写函数解决GB2312 to UTF-8的编码问题,更加郁闷。
[ 本帖最后由 ddid 于 2009-5-29 08:57 PM 编辑 ]
页:
1
[2]