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

---------------------

作者:Jack_Chai

来源:CSDN

原文:https://blog.csdn.net/chaijunkun/article/details/6266641

版权声明:本文为博主原创文章,转载请附上博文链接!来源:https://www.icode9.com/content-2-359151.html

delphi xe 连接 mysql_Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决相关推荐

  1. delphi xe mysql_Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决(对三层的例子配置有帮助)...

    标签: Delphi IDE中包含一个Data Explorer的组件,如下图所示: 该组件基于dbExpress(包含TSQLConnection.TSQLDataSet.TSQLQuery.TSQ ...

  2. delphi xe mysql_Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决

    [用户在使用FineReport报表时,客户端连接SQLSever.Oracle.Informix时常常会出现一些错误,笔者整理了一些疑难问题的解决方案.1. SQLServer数据库连接失败常见解决 ...

  3. MySQL数据库应用形考_2020国开中优教育《MySQL数据库应用》形考任务题库

    2020国开中优教育<MySQL数据库应用>形考任务题库 1.以下哪个不属于"汽车用品网上商城"的实体( ) 用户 用户类别 汽车配件 用户编号 正确答案 2.URT ...

  4. php 读取excel中的内容到mysql 数据库

    .................................................................................................... ...

  5. Xshell连接mysql数据库乱码问题解决思路总结

    Xshell连接mysql数据库乱码问题解决思路总结 参考文章: (1)Xshell连接mysql数据库乱码问题解决思路总结 (2)https://www.cnblogs.com/lxcy/p/924 ...

  6. cpp导入excel到mysql_将EXCEL表格中的数据导入mysql数据库表中

    本文转载自http://blog.sina.com.cn/s/blog_5d972ae00100gjij.html 今天项目上遇到需要将excel中的数据导入到数据库的classify表中,于是乎拼命 ...

  7. DATABASE_ROUTERS在Django中使用多个MySQL数据库进行配置

    在Django中,默认使用的MySQL数据库为default, 如果不进行配置的话,迁移建表就会创建到default数据库 准备: 先创建两个数据库 在创建一个管理员管理这两个库 create use ...

  8. 从csv文件中导入数据到MySQL数据库

    从csv文件中导入数据到MySQL数据库 转: 一.Workbench客户端导入(8.0.11基本导不全且速度奇慢) 1.点击如下图标创建数据库(非必要) 2.在表类上右键导入 二.SQL语句导入(可 ...

  9. delphi通过php连接数据库,delphi2010中使用sqlitesimpledelphi连接sqlite数据库并解决中...

    delphi2010中使用sqlitesimpledelphi连接sqlite数据库并解决中 作者:小涵 | 来源:互联网 | 2014-05-28 16:21 阅读: 6469 应女朋友的要求,要写 ...

  10. 两表连接查询 mysql_MySQL 中两表连接查询总结

    在之前的学习中,筛选出来的列都是一张表中的,本篇开始是对连表查询的学习内容.先从以下场景开始: 生成一张报价单,报价单包含商品名称,栏目名称,商品库存,商品价格,栏目名称和商品信息放在两张表中. 传统 ...

最新文章

  1. 深入理解Android消息处理系统——Looper、Handler、Thread
  2. Web应用程序指纹识别工具BlindElephant
  3. 数据结构 - 如何判断两个无环单链表是否相交;如果相交,给出相交的第一个结点
  4. Android禁止横屏竖屏切换
  5. com.alibaba.druid.pool.DruidDataSource.error解决办法
  6. python 工资管理软件_基于[Python]的员工管理系统
  7. c语言获取系统剩余内存_C语言编程中的“堆”和“栈”七大不同之处
  8. 上海纳税百强2016,邢台2017纳税百强,深圳百强企业
  9. 如何调整标题字体大小_软网推荐:找回调整Windows 10字号功能
  10. IGNN图卷积超分网络:挖掘隐藏在低分辨率图像中的高清纹理
  11. 多重共线性问题的几种解决方法
  12. 从零开始学习python编程-从零开始学Python程序设计 PDF 完整影印版
  13. 文字识别成语音_广东人专属!微信语音转文字可以识别粤语了!
  14. 兼职招募!贪心科技招聘AI课程讲师,薪资超行业标准
  15. win10 华硕ASUS USB AC56 无线网卡 欧版 5G 信号不全 问题修复
  16. 代码review神器Upsource,让你快乐的进行CodeReview
  17. 熊市之后!除了割肉就是割肉!(爆笑漫画)
  18. 暴雪与网易宣布停止合作,多家厂商争夺暴雪代理权
  19. 计算机图形学基础:2D/3D坐标变换(Transformation)
  20. 短视频2020,快手、抖音的分化之年

热门文章

  1. JPBC Element传输
  2. MyBatis(二)------使用JDBC编程问题总结
  3. JVM对象分配和GC分布【JVM】
  4. 获取url路径上的参数,(避免中文乱码)
  5. 【Python】Centos + gunicorn+flask 报错ImportError: No module named request
  6. 《C#图解教程》 总览
  7. java程序编写需注意的问题
  8. Visual Studio配置(4):项目属性页-VC++目录
  9. JavaScript数组去重的四种方法
  10. Eclipse 编译StanfordNLP