安装好了TurboDelphi,又从网上邮购了李维的《Delphi2006高效数据库程序设计》,书写的和台湾作者的风格一样,循序渐进,步步展开,容易理解。但感觉困惑的是李维似乎和大陆一些书籍作者一样,喜欢使用data control控件,也许这样更便于演示吧。
今天在单位装好delphi后,试着连接后台的mysql服务器,但出现和delphi7一样的错误,显然,免费的turbo delphi还没有使用DBExpress4.0,而使用了和delphi7.0一样的3.0的版本。好在DBExpress可以自己定制,于是修改了相关配置,使用了Openmysql41,连接顺利。但随后的问题接踵而来。
我连接的数据库是后台的一个会计用数据库,Mysql默认的字符集编码是GBK,由于为了更好的存储、显示好开户单位的名称,会计数据库用的是UTF8的字符集,我原先显示的时候是用php网页显示,调用数据前先声明字符集:set names utf8,这样显示数据是没有问题的,但使用delphi连接显示,汉字总是乱码。
上网查询,解决的方案大多是说使用set names utf8,也有的说是修改连接配置,但大多数都是不起作用,在署名李维的一篇帖子里面宣称使用4.0版本没有问题,但我到哪里去下载DBExpress4.0去啊。
官方的指望不上,那就继续找开源的,在http://www.justsoftwaresolutions.co.uk/delphi/dbexpress_and_mysql_5.html上面找到了源代码,编译配置之后,并没有使用mysql5.0的libmysql.dll 文件,依旧延续4.1的libmysql.dll ,连接没有问题,但显示的时候依然是乱码。
本来有些失望,但注意到这些乱码不同于之前的乱码,于是试着用gbk替换utf8,结果显示完全正确!忙又换了一个gbk字符集的数据库,连接显示也是正常!看来这个开源版本的字符集是在指定mysql数据库的默认编码的情况下可以自行判定并显示数据记录的编码,真是不错。
dbexpress的确不错,速度快,依赖少,但问题如网上所说,更新慢,而且新的更新版本找不到下载的地方,也许只能使用更高的版本的delphi,这也不现实。幸亏网上有开源版本的。