• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

DelphiXE中使用dbExpress连接MySQL数据库疑难问题解决

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决       

  

Delphi IDE中包含一个Data Explorer的组件,如下图所示:

 

 

该组件基于dbExpress(包含TSQLConnection、TSQLDataSet、TSQLQuery、TSQLStoredProc、TSQLTable、TsqlServerMethod、TSQLMonitor、TSimpleDataSet)。但是因为该组件只提供了各种数据库的抽象驱动,没有提供底层的与数据库直接交互的驱动库,因此,要想使用具体某种数据库,还需要搭配提供商驱动。本文以Delphi XE在Windows 7 Ultimate版系统下连接MySQL Community Server 5.5.10数据库为例,介绍了本人在实现过程中遇到的问题,希望对遇到同样问题的朋友有所帮助。

 

第一,作者走了一个最大的弯路,为了图省事,在Windows 7系统中使用的是msi版本的MySQL数据库(为什么说是最大的弯路且看下文)。安装好后启动服务什么的折腾了一大圈,关键是服务启动不起来。如果你使用的是图形化的MySQL Server Instance Configuration Wizard,一定要注意,当选择数据库用处为Multifunctional Database 或 Transactional Database Only 时,向导会让你指定 InnoDB Tablespace。你的机器如果以前安装过MySQL,这个目录不可以是之前安装实例所使用的InnoDB Tablespace,最好是新建的一个目录,否则容易引发MySQL服务不能启动的故障。

 

第二,为了做测试,没有在MySQL服务器中添加额外的用户账户,因为默认策略中,MySQL对root账户是禁止远程访问的,难怪我尝试本地连接一点问题都没有,换了另一台在同一个局域网的机器上登录该服务器就出错呢。解决的办法如下:

 

进入MySQL的控制台。在cmd中定位到MySQL安装目录的bin子目录,输入mysql -u root -p,回车后会要求你输入root账户的密码,如果没有密码直接回车,否则输入root密码,回车。如果看到mysql>表示成功登录。

 

切换到使用系统数据库mysql状态,输入:use mysql;回车。

 

如果你已经设置了root密码,请忽略此步,否则请输入 UPDATE user SET Password=PASSWORD('your root password') WHERE User='root';回车。其中括号中引号内输入的是你指定的root账户密码。语句的最后别忘了以英文分号结尾,回车。这样就设置了root账户的密码。

 

输入:GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";回车,这样就设置了root账户可以被远程的任何一台计算机登陆,当然,这只是为了实验,真正应用环境中不推荐这样使用,会有很大的安全隐患。

 

重要的来了,别忘了应用刚才的设置。输入:FLUSH PRIVILEGES;只有这样才能让上一步的权限设置生效。

 

以上这两点只是为了确保MySQL能够在Windows 7系统中跑起来,并且能够被远程访问,如果你已经做到了以上的两点,请直接无视(哈哈,说晚了)

 

这里之所以使用Data Explorer,是因为在不建立工程的基础上可以通过它来测试dbExpress是否能连接上MySQL数据库。展开MySQL节点,修改列出的对应连接,如下图所示:

 

 

参数都配置完成后点击左下角的“Test Connection”按钮来测试连接,如果你得到了如下图所示的提示(Driver could not be properly initialized.  Client library may be missing, not installed properly, of the wrong version, or the driver may be missing from the system path.):

 

 

那么就跟着下面的方法走:

 

将MySQL安装目录下lib子目录中的libmysql.dll文件拷贝至c:/windows/system32(系统不在c盘的请转至对应目录),重新启动Delphi XE,按照上面的步骤测试连接,你会发现还是出现无法正确初始化数据库驱动的问题。我被这个问题困扰了三天,最后解决的办法非常之荒谬,还记得我一开始说的“最大的弯路”么?最大的弯路就是使用的是安装版的MySQL。你只要使用解压版的MySQL数据库就没有问题。其实这里面真正作祟的还是libmysql.dll。只要从解压版的MySQL中提取出该版本的libmysql.dll复制到c:/windows/system32目录下就不会发生无法正确初始化数据库驱动的问题。

 

 

 

 

 

程序开发完毕之后需要对其进行部署。部署的时候不要忘了将dbExpress对应MySQL数据库的抽象驱动dbxmys.dll和MySQL底层驱动libmysql.dll都与主程序放置在同一个目录中。

 

附:文中提到的可用的MySQL数据库驱动:http://download.csdn.net/source/3114666


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi Form Designer (窗体设计器)之一发布时间:2022-07-18
下一篇:
Delphifunction发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap