用dbExpress连接数据库的一点记录

Delphi为我们提供了强大的数据库连接控件,如dbExpress,其执行效率不亚于ADO。有关于它的一些使用方法,我提一下自己总结的愚见。

一、连接MySQL数据库的问题:

1.       创建一个工程,在窗体上放置控件TSQLConnection,此控件是Delphi连接MySQL的关键一步,其设置大体如此:双击TSQLConnection控件打开设置窗,

在窗口右侧Key栏下DriverName中设置数据库类型(目前dbExpress只支持MySQLDB2InformixInterBaseOrcale五种数据库),我们设置”MySQL”HostName栏用于指定被连接的数据库所在的计算机,此处设置为服务器数据库ServerDatabase用于指定数据库名称,指定为TestUser_Name指定了此HostName下的用户名称,为root。至此,连接选项配置完成。

1.       再将TSQLConnection控件下的LibraryName属性改为“dbexpmys.dll”。

2.       Connected属性改为True,即可连接成功。

注:若TSQLConnection控件的LoginPrompt属性为True,在连接时会弹出连接窗,如果数据库无密码,直接确定即可。

二、操作数据库

连接成功之后,在窗体放入TSQLQuery控件,将SQLConnection属性设置为SQLConnection1即可运行Sql语句操作数据库。

三、显示数据

数据显示通常采用TDBGrid控件,但此控件是双向的,而TSQLConnectionTSQLQuery是单击数据集,即只读不写。直接将TDBGrid连接到TSQLQuery上是行不通的。我们可以采用多层数据的办法解决,即放置TclientDataSetTdataSetProvider组件先将

TDBGrid.DataSource->DataSource 

DataSource.DateSet->ClientDataSet

ClientDataSet.ProviderName->DataSetProvider

DataSetProvider.DateSet->SQLQuery;之后,将ClientDataSet.Active属性置为True即可在TDBGrid上显示所连数据库。

四、程序设置数据库

程序设置TSQLConnection控件的各参数与手动设置大体相同,但应遵守一定的顺序,不可颠倒,如下所示:

SQLConnection2.DriverName := 'MySQL';

SQLConnection2.Params.Add('DriverName=MySQL');

SQLConnection2.Params.Add('HostName=server');

SQLConnection2.Params.Add('Database=test');

SQLConnection2.Params.Add('User_Name=root');

SQLConnection2.Params.Add('Password=');

SQLConnection2.Params.Add('BlobSize=-1');

SQLConnection2.Params.Add('ErrorResourceFile=');

SQLConnection2.Params.Add('LocaleCode=0000');

SQLConnection2.VendorLib := 'libmysql.dll';

SQLConnection2.GetDriverFunc := 'getSQLDriverMYSQL';

SQLConnection2.LibraryName := 'dbexpmys.dll';

SQLConnection2.ConnectionName := 'cao';

SQLConnection2.Connected := True;

ClientDataSet2.Active := True;

即:先设置DriverName,再设置Params,最后才是VendorLibGetDriverFuncLibraryNameConnectionName等,再次dbexpmys.dll(92K)是dbExpress自身的连接库,也可为dbexpmysql.dll(93.5K),另外,libmysql.dll(212K)是mysql自身使用的接口库,我查看了一下libmysql.dll内有81个接口函数,有此两个库,即可连接mysql,但必需注意,这些接口库要么与Exe平级存在,要么存在于系统盘system32目录下。

五、在界面上更新数据

TSQLConnection是单向数据集,不能在界面上直接修改,但我们用TclientDataSetTdataSetProvider建成了多层结构,在修改的时候通过TclientDataSet控件的ClientDataSet1.ApplyUpdates(-1);方法即可更新到数据库中。

 

注意:由于MYSQL4.0以上的版本采用了密码加密技术,有可能导至dbExpress在连接4.0以上的服务时出现无效的用户名或密码的提示,起初我也百思不得其解,总认为自己服务装得有问题,后来,经高人指点得知此因。具体解决办法如下:

   1、登录mysql服务器(在mysql安装目录下进入bin中输入命令:mysql -hmysqlhost  -umysqluser  -pmysqlpassword;

   2、在mysql>提示符下输入SET PASSWORD FOR ‘需要修改的用户名’@'mysql服务器的IP' = OLD_PASSWORD('newpwd');


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值