首先是字符集的问题,随着mysql对字符集功能增强,早期的写的mysql程序就有可能出现乱码,同样字符集设置不对,结果还是乱码,存进去都乱码。在CodeGear C++Builder 2007出来之前,我一直用BCB6写mysql的小工具程序,用于测试。初期我们用的都是mysql 3.0,dbexpress 1.0,mysql的驱动也是3.x的,开始用的时候一切都很正常,结果我们使用mysql 5.x后,全是乱码,特别是windows下的mysql,linux下的mysql还能正常使用,要求用的字符集中缺省intia1字符集就可以了,但是现在目标系统数据库用的都是mysql5.0的,GBK字符集,不用说,肯定是乱码。
于是在BBS上发贴,请求帮助,结果有一个兄弟给我答案是连接参数中服务端字符集设置不对。只是设置正确了就可以了,但我用BCB6下,设置,不行。于是发了一个贴骂了dbexpress,结果一个貌似“李维”的兄弟,耐心的讨论着解决我遇到的问题。最后,我用C++Builder 2007+dbexpress 4.0加上服务器设置解决了这个问题。也就是在连接数据库时参数设置加下面一行即可。Conn->Params->Add("ServerCharset="+cfg->ServerCharset);具体的字符集,自已设置啦。
其次关于mysql的驱动的问题,由于mysql一直在小版本的变化,我安装了三回mysql,分别是5.0.37,5.0.41,5.0.45,其中5.0.41的驱动与dbexpress 4.0配合有问题,一个是使用程序出异常,一个是程序退出来后,出非常访问异常。结过多次尝试,最终使用5.0.45的驱动比较完美的解决问题了。
最后,使用CodeGear C++ Builder 2007中,发现CodeGear C++Builder 2007还是非常的不稳定,虽然已经update3了,代码提示还是很慢,我把它关了。C++程序有出现一些兼容性的问题!所以我也只能拿它偶尔写写小工具了。拿它开发系统的你,可要注意了。