北大侠客行MUD论坛

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

解决了一个困扰我3个月的问题,发贴纪念一下!

[复制链接]
发表于 2009-8-15 18:29:32 | 显示全部楼层 |阅读模式
三个月以前就知道MUSHclient4.40提供了SQLite的API,MUSH有了SQLite的支持会更强大,但实际使用中却发现,SQLITE内部数据的存储是UTF-8的,而MUD里抓出来的文字都是GB2312的,实际使用SQL语句查询的时候(尤其是模糊查询)根本不会有正确的结果,郁闷了好久(最后改回了ACCESS),今天终于找到了解决的办法!

luaiconv

根据GAMMON的贴子以及前段时间duno关于dll编译的帮助,改写了luaiconv.c,重新编译成.dll文件,MUSH已经可以正常调用了,调用的例子如下:


  1. function test_iconv()

  2. assert (package.loadlib ("luaiconv.dll", "luaopen_iconv")) ()

  3. local cd = iconv.open("UTF-8", "GB2312") -- set the codeset's convertion is from GB2312 to UTF-8.

  4. local text = "中国"

  5. local outstr, err = cd:iconv(text) -- call iconv() method to convert the text's codeset.

  6. if err == iconv.ERROR_INCOMPLETE then
  7.     print("ERROR: Incomplete input.")
  8.   elseif err == iconv.ERROR_INVALID then
  9.     print("ERROR: Invalid input.")
  10.   elseif err == iconv.ERROR_NO_MEMORY then
  11.     print("ERROR: Failed to allocate memory.")
  12.   elseif err == iconv.ERROR_UNKNOWN then
  13.     print("ERROR: There was an unknown error.")
  14.   end -- if;

  15. print(outstr)
  16. print(err)

  17. end -- test_iconv()
复制代码


下面就要开始我的SQLITE之旅了……
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2009-8-15 19:06:24 | 显示全部楼层
“MUSH有了SQLite的支持会更强大”
怎么个强大法?
和ACCESS相比有什么显著优势?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2009-8-15 19:27:18 | 显示全部楼层
SQLite 是什么,头一次听说
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2009-8-15 19:35:33 | 显示全部楼层
为什么呢?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2009-8-15 19:52:39 | 显示全部楼层
我印象中JavaScript是可以连sql sever的吧,看看API
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2009-8-15 20:09:25 | 显示全部楼层
原帖由 netants 于 2009-8-15 19:52 发表
我印象中JavaScript是可以连sql sever的吧,看看API


SQLite不是以server/client方式运行的,实际上它是一个硬盘文件,运行的时候load进内存中,数据库操作都在内存中完成,所以速度比s/c方式的数据库要快。

javascript我印象中好像可以用ODBC的方式连接,但ODBC的效率实在是数据库连接中的下策。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2009-8-15 20:14:19 | 显示全部楼层
原帖由 maper 于 2009-8-15 19:06 发表
“MUSH有了SQLite的支持会更强大”
怎么个强大法?
和ACCESS相比有什么显著优势?


说实话,因为编码问题的困扰,这3个月没怎么弄SQLite,只能说个大概。

SQLite本身和ACCESS比比较,性能,容量,可扩展性等等都比ACCESS要高。

在MUSH应用上,由于MUSH有API,可以不用ODBC的方法连接,所以就不用去调整DSN什么的了。

另外,据说SQLITE支持TCL编程,可以考虑把地图数据存入数据库以后,用数据库中编程,自动生成路径……有点YY

暂时就想到这么多了……

谁能补充一下?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2009-8-15 20:22:52 | 显示全部楼层
要是数据库就在本地,odbc没啥问题吧
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2009-8-15 20:25:57 | 显示全部楼层
原帖由 netants 于 2009-8-15 20:22 发表
要是数据库就在本地,odbc没啥问题吧


把机器人移植到其它机器上,odbc需要调整DSN的。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2009-8-15 20:30:28 | 显示全部楼层
我怎么记得JavaScript不用设置odbc呢?应该是用的方法跟ADO.NET差不多
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-21 05:20 PM , Processed in 0.012410 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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