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

Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决的更多相关文章

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

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

  2. XE7/X10.2 Datasnap使用 dbExpress 连接MySQL数据库

    本人使用:DELPHI X10.2.2 版本连接 MYSQL 5.1 (安装 mysql-5.1.72-win32.msi)的32位版本,开始连接不了: 将 MYSQL 5.1 安装目录下bin 中的 ...

  3. JSP中使用JDBC连接MySQL数据库的详细步骤

    1,首先在自己新建的项目文本框中输入Web Project的名称,然后单击下一步. 2,继续单击下一步 3,把Generate web.xml deployment descriptor复选框勾上. ...

  4. 在java程序中使用JDBC连接mysql数据库

    在java程序中我们时常会用到数据库中的数据或操作数据库中的数据,如果java程序没有和我们得数据库连接,就不能实现在java程序中直接操作数据库.使用jdbc就能将java程序和数据库连起来,此时我 ...

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

    乱码问题一直是一件让人头疼的事情,乱码就是编码格式不统一产生的,下面将一些常见的解决思路整理: 先Xshell连接上数据库,查看数据的编码格式: 一般需要看这么几个地方(附修改命令): 1.数据库的编 ...

  6. VS2017项目中使用代码连接MySQL数据库,以及进行数据添加

    //头文件 #include "mysql.h" //函数定义 // 执行sql语句, 包括增加.删除.更新数据 bool ExecuteSql(MYSQL m_mysql,con ...

  7. VS2017控制台应用中通过代码连接MySQL数据库

    一,右键单击项目名称,选择属性 二,项目名->属性->c/c+±>常规->附加包含目录 添加路径:C:\Program Files\MySQL\MySQL Server 8.0 ...

  8. 刚刚完成了在vs2013中通过 ef连接mysql数据库的工作。感觉没有想象中的简单。试了n次终于成功。故记录成功的方法,希望可以帮到大家

    分两种情况,如果你是用entity framework 5.0的时候 mysql-connector-net的版本不是很重要. MySQL For VisualStudio的版本也不重要 (这个不装就 ...

  9. 关于远程连接MySQL数据库的问题解决

    安装MySQL sudo apt-get install mysql-server 这个应该很简单了,而且我觉得大家在安装方面也没什么太大问题,所以也就不多说了,下面我们来讲讲配置. 配置MySQL ...

随机推荐

  1. 接口中的JSON报文

    原始报文: 请求报文: [ { "appNo" : "", "applicantCredentialCode" : "" ...

  2. http之browser抓包

    Chrome 抓包 详解谷歌Network 面板 快捷键:Control+Shift+I (Windows) or Command+Option+I (Mac) 控制器 补充知识: HAR Chrom ...

  3. docker 构建自己的image 镜像文件

    docker build 构建自己的镜像文件. 1.在本地工程中运行生成一个springboot的可运行的jar. 因为我习惯用eclipse,所以在eclipse下新建一个springboot的工程 ...

  4. VS - Microsoft.Practices.EnterpriseLibrary.Logging

    string fileName = AppDomain.CurrentDomain.BaseDirectory + "\\log.txt";File.AppendAllText(f ...

  5. saltstack 在window下 发布 service 服务

    saltstack 发布 service 服务 如果是注册的服务发布:   salt -L '172.16.3.39' state.sls service.deploy 目录结构: /home/sal ...

  6. Bzoj 1926: [Sdoi2010]粟粟的书架(二分答案+乱搞+主席树)

    1926: [Sdoi2010]粟粟的书架 Time Limit: 30 Sec Memory Limit: 552 MB Description 幸福幼儿园 B29 班的粟粟是一个聪明机灵.乖巧可爱 ...

  7. 洛谷 P1855 榨取kkksc03 题解

    P1855 榨取kkksc03 题目描述 洛谷2的团队功能是其他任何oj和工具难以达到的.借助洛谷强大的服务器资源,任何学校都可以在洛谷上零成本的搭建oj并高效率的完成训练计划. 为什么说是搭建oj呢 ...

  8. ElasticSearch : 基础简介

    1.安装 我用的docker安装,这个用起来比较方便,我是在腾讯云部署的docker,具体的过两天总结一下 安装: docker pull elasticsearch 运行: docker run - ...

  9. IIS7 伪静态 web.config 配置方法【详解】

    IIS7 做伪静态比较的简单方便 1.程序方面 只需要设置web.config 就可以了. 2.服务器需要安装:URL Rewrite 下载地址:http://www.iis.net/download ...

  10. HTTP请求响应的过程

    1. TCP/IP协议分层结构 应用层(含括了OSI七层中的上三层,分别为应用层,表示层, 会话层):DNS,  URI,  HTML,  HTTP,  TLS/SSL,  SMTP,   POP,  ...