标签:

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都与主程序放置在同一个目录中。

http://blog.csdn.net/chaijunkun/article/details/6266641

标签:

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

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

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

  2. 在java中使用JDBC连接mysql数据库时的服务器时区值无法识别或表示多个时区的问题解决方案

    项目场景: 在java中使用JDBC连接mysql数据库时,报以下的错:Exception in thread "main" java.sql.SQLException: The ...

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

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

  4. pycharm中django框架连接mysql数据库

    1.首先下载安装pymysql模块. pip install pymysql 如果出现 timeout 超时可以使用其他的资源下载: pip install 模块名 -i https://pypi.d ...

  5. java中class.forname连接mysql数据库_数据库链接与 Class.forName()用法详解

    主要功能 Class.forName(xxx.xx.xx)返回的是一个类 Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类, 也就是说JVM会执行该类的静态代码段 ...

  6. jdbc读取mysql数据库_Ecplise 中利用 JDBC 连接 Mysql 数据库读取数据

    准备工作 将压缩包解压得到文件 mysql-connector-java-5.1.41-bin.jar 备用 打开 Mysql 控制台创建数据库及数据表,并插入测试数据.代码如下: CREATE DA ...

  7. jdbc连接mysql数据库驱动下载_Java Jdbc驱动下载配置连接mysql数据库方法代码

    1.MySQL JDBC驱动下载 打开上面的下载地址,选择"Platform Independent",然后下载tar.gz或zip格式的都行,之后解压出来得到Jdbc驱动(mys ...

  8. xe7 mysql_XE7Datasnap使用dbExpress连接MySQL数据库_MySQL

    dbExpress提供了多种数据库的连接能力,这次以MySQL为例,对MYSQL的连接进行了试验,过程中需要注意的几个点: 1.创建DataSnap的服务器端,这些都没什么说的,根据向导来,最后生成S ...

  9. java中class.forname连接mysql数据库_Java加载数据库连接驱动,为什么要用Class.forName()方法?...

    展开全部 目的是为了实例化对象. Class.forName("")返回的是类e68a84323131333532363134313032313635333133336564363 ...

最新文章

  1. Linux下环境变量配置方法梳理(.bash_profile和.bashrc的区别)
  2. Winform开发的界面处理优化
  3. 编写高质量代码改善C#程序的157个建议——建议127:用形容词组给接口命名
  4. 学习 jQuery 源码整体架构,打造属于自己的 js 类库
  5. linux之dig命令
  6. 基本数据类型参数传递 与 引用数据类型参数传递区别
  7. Python实现信号滤波(基于scipy)
  8. 屏幕缩放和Origin缩放不一致如何解决?
  9. 小组取什么名字好_起名字大全宝宝起名字:起名字免费:女孩姓赵取什么名字好...
  10. c语言程序设计选修让我学到的东西,电子课程设计心得体会
  11. Unknown integral data type for ids : java.lang.String; nested exception is org.hibernate.id.Identifi
  12. 我认为还是得学会自己焊接贴片元件,有专门的贴片元件焊接练习板,虽然有SMT,就像无人机要练习飞自稳一样。我们不能什么都靠SMT
  13. python错误:TypeError: Cannot interpret ‘3‘ as a data type
  14. “微盟事件”星瑞格(Sino-DB)产品解决方案
  15. EXCEL日月年转换成年月日
  16. opengl SwapBuffers的等待,虚伪的FPS
  17. Zabbix 5.0安装教程(详细,最全,无误)
  18. 带你使用vue为女朋友编写一个旋转相册
  19. 【Android】Android界面设计
  20. navicat 导出到excel 出现换行、空格等

热门文章

  1. 指南|松下PLC与研控E总线驱动器连接步骤及注意事项
  2. 汽车电子_EMC测试_CE电流法整改
  3. Binder机制总结
  4. 智慧建筑 的破题立意心得
  5. 双11中的产业带:天猫集中爆发,“京多”紧急布局
  6. Mac获取文件路径小方法
  7. 2022-2-22 王爽《汇编语言》实验一
  8. 电脑密码破解、笔记本密码介绍
  9. java解密zip文件(亲测可用)
  10. Eclipse CDT中出现 Nothing to build for XXX 的问题