Delphi2006连接Mysql5.1

转载 2014年06月16日 03:08:28

本文转自 http://www.cnblogs.com/JackSun/archive/2010/12/16/1908145.html

这两天抽空研究了下Delphi2006如何连接Mysql5.1,过于追求新版本有时就会遇到此类问题,厂商实现不完善,有地方没实现或没考虑到的,直接用它的产品就会出问题。baidu搜了搜国内网站,好像还没此类文章,可能是没多少人在用Delphi2006了,呵呵。用google搜,还是老外nb啊,找到了不少连接的方法,有几种都是商业产品,例如mydac、dbx等,看看价格,还都不便宜,那个价人民币我都嫌贵,何况还是dollars。发财的机会还是很多的,趁厂商自己还没做开发个这样的数据库连接驱动也能赚一笔。大致找到了如下几种免费的办法,总结一下:

 

测试环境: 
WinXP+SP2 
Delphi2006+SP2 
mysql-5.1.14-beta-win32

1.ODBC+ADO 
此种方法应该是最能保证稳定和正常进行数据库操作的,但效率无疑最低,而且ODBC现在用的人已经很少了,用户安装时还要配置个ODBC,这个麻烦事估计现在已经很少人还再做了吧。 
在Mysql官网上下了个ODBC驱动,mysql-connector-odbc-5.00.10-beta-gpl-win32版本,还是beta版,但问题应该也不会太大,担心有问题的人还是用mysql-connector-odbc-3.51.12-win32这个版本好了,应该比较稳定。 安装完ODBC驱动,配置数据源。在“系统DSN”中添加一个数据源,选择“MySQL Connector/ODBC v5”驱动程序,然后设置连接参数。“Data Source Name”可自己随意起,Description随便写,Server填写数据库地址,User、Password就不用多说了吧,Database是要连接的数据库,Port可不填使用默认值,默认就是3306端口,如果修改了数据库连接端口自然在此也要做相应改动。如下图。 

此时配置就完成了,点击确定后可看见多出了一个刚配置的数据源。 

然后进行ADO配置,新建一udl文件。提供程序选择“Microsoft OLE DB Provider for ODBC Driver”,在“连接”选项卡中进行详细配置,使用数据源就是刚才配置的ODBC数据源名称,输入用户名、密码,初始目录空白,因为此时要连接的数据库早在ODBC中就已经被指定了。点击“测试连接”,提示成功就说明配置已经完成。
 

做一个最简单的Demo,在Form上放上TADOConnection、TADOQuery、TDataSource、TDBGrid四个控件,具体连接和属性设置就不多说了,不会连这些都不会吧,真不会就去查查别的书,设置方法都一样的。一行代码都不用写,连程序都不用运行,就能看到数据记录已经被查询出来了。 

2.DBExpress+dbxopenmysql50.dll 
可能很多人会奇怪,dbxopenmysql50.dll是什么东东?DBExpress不就是数据库连接组件了吗,为什么还要加上这个东西?这是由于Delphi2006中的DBExpress对Mysql高版本的支持很差,从国外论坛上看到的说法似乎是根本就没实现,所以说虽然TSQLConnection组件中提供了Mysql选项,但直接使用的话是不行的(低版本的mysql可能可以),我遇到的现象是提示“Unable to Load libmysql.dll”,但其实我已经在系统目录System32下、Delphi安装目录的bin中、开发工程项目文件夹中都安放了该文件,还是找不到该dll。 
dbxopenmysql50.dll是由老外开发的,而且开源,还是老外好啊,可以到如下网址去下载: 
http://www.justsoftwaresolutions.co.uk/delphi/dbexpress_and_mysql_5.html 
使用时需要将dbxopenmysql50.dll和libmysql.dll都放到工程文件夹下。顺便提一下,libmysql.dll在mysql安装目录下的\lib\opt目录中。 
使用方法有两种,一种是直接修改Borland\BDS\4.0\dbExpress下的dbxdrivers.ini,调整其中关于mysql的各参数。 
另一种就是在程序中指定,现在我以这种方式为例说明这种连接方式的开发方法。 
在Form上放上TSQLConnection、TSQLQuery、TStringGrid、3个TButton、TLable。界面显示如下图。 

在FormCreate事件中: 
SQLConnection1 := TSQLConnection.Create(nil); 
SQLConnection1.DriverName := 'dbxmysql'; 
SQLConnection1.GetDriverFunc := 'getSQLDriverMYSQL50'; 
SQLConnection1.LibraryName := 'dbxopenmysql50.dll'; 
SQLConnection1.VendorLib := 'libmysql.dll'; 
SQLConnection1.LoginPrompt := false; 
在此设置TSQLConnection的各个具体参数,当然也可以直接在组件属性面板中修改,或者修改dbxdrivers.ini中的对应参数,方法是多种的。 
Connect按钮的事件: 
SQLConnection1.Params.Append('Database=user'); 
SQLConnection1.Params.Append('User_Name=mysql'); 
SQLConnection1.Params.Append('Password=mysql'); 
SQLConnection1.Params.Append('HostName=localhost'); 
SQLConnection1.Open; 
if SQLConnection1.Connected = true then 
Label1.Caption := 'success' 
else 
Label1.Caption := 'fail'; 
设置数据库连接的各参数配置后,打开数据库连接,同时显示连接是否成功。 
Query按钮的事件: 
var 
i,j: Integer; 
begin 
SQLQuery1.SQL.Clear; 
SQLQuery1.SQL.Add('SELECT * FROM userinfo'); 
SQLQuery1.Active := true; 
i := 0; 
SQLQuery1.First; 
while not SQLQuery1.eof do 
begin 
for j:=0 to SQLQuery1.FieldCount-1 do 
StringGrid1.cells[j,i]:=SQLQuery1.Fields[j].AsString; 
SQLQuery1.next; 
inc(i); 
end; 
SQLQuery1.Active := false; 
查询表数据并在StringGrid中输出。 
Disconnect按钮的事件: 
if SQLConnection1.Connected = true then 
SQLConnection1.Close; 
FormDestroy事件: 
if SQLConnection1.Connected = true then 
SQLConnection1.Close; 
SQLConnection1.Free; 
运行程序,点击connect按钮,如果数据库连接成功可以看到success提示,然后点击query按钮就能查询到表中的数据。 

3.TMySQLDatabase 
这也是老外开发的pas文件,只有两个文件libmysql.pas、mysqldatabasev10.pas,其它似乎什么都不要了,相当简练。可以去如下网址下载: 
http://tech.groups.yahoo.com/group/TMySQLDatabase/ 下载需要申请加入作者的组并等待批准,不过是全免费并且开源的。 
使用时也只需将这两个文件放到工程文件夹中,然后就可调用了。下面开发一个简单的Demo。 
在Form上放上TStringGrid、3个TButton、TLable。界面显示如下图。 

在pas文件头的uses中添加MySQLDatabaseV10,说明引用了该单元。 
添加声明: 
public 
MySQL: TMySQLDatabase; 
MySQLQuery: TMySQLQuery; 
end;

 

FormCreate事件: 
MySQL:=TMySQLDatabase.Create; 
创建TMySQLDatabase。 
connectToDB按钮的事件: 
MySQL.ServerName:='localhost'; 
MySQL.UserName:='mysql'; 
MySQL.Password:='mysql'; 
MySQL.DatabaseName:='user'; 
MySQL.Open; 
if not MySQL.Active then 
MessageDlg(MySQL.ErrorMessage, mtError, [mbOk], 0) 
else 
begin 
MySQLQuery:=TMySQLQuery.Create(MySQL); 
end; 
if MySQL.Active and MySQL.ServerReady then 
Label1.Caption := 'Success' 
else 
Label1.Caption := 'Fail'; 
设置数据库连接参数,打开数据库连接,连接成功则创建TMySQLQuery,用以进行数据操作。 
queryDB按钮的事件: 
var 
i, j: Integer; 
begin 
if MySQL.Active then 
begin 
MySQLQuery.clear; 
MySQLQuery.SQL.add('SELECT * FROM userinfo'); 
MySQLQuery.Open; 
i:=0; 
MySQLQuery.first; 
while not MySQLQuery.eof do 
begin 
for j:=0 to MySQLQuery.FieldCount-1 do 
StringGrid1.cells[j,i]:=MySQLQuery.FieldByNumber(j).AsString; 
inc(i); 
MySQLQuery.next; 
end; 
end; 
查询表数据并在StringGrid中显示。 
FormDestroy事件: 
if not MySQL.Active then 
MySQLQuery.free; 
MySQL.free; 
运行程序,点击connectToDB按钮,如果数据库连接成功可以看到Success提示,然后点击QueryDB按钮就能查询到表中的数据。 

总结: 
由于没有深入使用这三种连接方式,无法对三者的稳定性、可行性、效率等做出比较。感觉这三者在做基本数据库操作时应该都不会有问题,但在某些深层次应用中难免会存在一些bug,需要在实际应用中去慢慢得见了。这些方面应该还是那些商业化的产品做的比较好吧,条件允许建议还是购买商业化产品,维护、升级等更有保障,开源的东西毕竟和作者的个人兴致关联很大,可能随时就不再更新和维护了。


win7下用VC6.0连接MySQL5.1数据库

软件环境: Win7 64位 + MySQL5.1 + VC6.0   在VC中调用MySQL数据库时,需要用到MySQL5.1安装位置的include目录和lib目录,还有libmysql.lib...
  • sanqima
  • sanqima
  • 2015年12月03日 18:55
  • 850

MySql5.1ODBC连接驱动

  • 2015年05月04日 11:47
  • 3.87MB
  • 下载

amoeba连接mysql--ERROR 2006 (HY000): MySQL server has gone away

amoeba下载地址:http://sourceforge.net/projects/amoeba/files amoeba version:amoeba-mysql-binary-2.1.0-RC...

Delphi 2006语言新特性

type //非引用,可直接赋值,Record不可继承,Object可继承 TRecord = record{object} const //定义了常量后影响Ctrl+Shift+...
  • cmd9x
  • cmd9x
  • 2016年12月30日 11:57
  • 114

2006毕业设计Delphi篇(五)

====================================================== 注:本文源代码点此下载 =============================...

Delphi 2006 高级控件应用

  来源:电脑报    Borland Developer Studio 2006 已于 2005 年 12 月 5 日正式发布了。 Delphi 2006 是 Borland Developer S...
  • voyan
  • voyan
  • 2011年05月12日 18:22
  • 534

Delphi2006 DBexpress驱动

====================================================== 注:本文源代码点此下载 =============================...

Castalia5.1D2006

  • 2007年12月18日 09:06
  • 3.73MB
  • 下载

最简洁的delphi连接mysql数据库

  • 2014年01月16日 10:32
  • 257KB
  • 下载

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

Delphi 中使用dbExpress组件连接MySQL数据库时经常出现问题。本篇文章通过作者亲身经历,将详细的连接方法和注意事项进行列举和说明,供大家参考。所使用的平台为:Windows 7 Ult...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Delphi2006连接Mysql5.1
举报原因:
原因补充:

(最多只允许输入30个字)