delphi连接mysql数据库问题

delphi连接mysql数据库问题,第1张

建议使用三方组件,连接MYSQL专用的。。delphi盒子就有下载!连接方法如下:

MyConnection1.Connected:=false

MyConnection1.Database:=‘数据库

MyConnection1.Username:=‘账号’

MyConnection1.Password:=密码

MyConnection1.Port:=3306//MYSQL端口

MyConnection1.Server:=‘IP’

MyConnection1.LoginPrompt:=false

MyConnection1.Connected:=true

解决方法:

1)设置ODBC中, Advanced-->Flag 3-->Read Options From my.cnf

2)将以下内容保存为%windir%\my.cnf(注意:是WINDOWS系统目录)

你可以将下面的内容复制保存成文件即可.

[client]

default-character-set=gbk(gb2312)

以上是利用一个配置文件进行的处理.在发布程序的时候比较难处理.

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

下面这个方法不用利用配置文件,可以在创建完数据连接之后执行.

//"SET NAMES GB2312"的作用相当于

//SET character_set_client = GB2312

//SET character_set_results = GB2312

//SET character_set_connection = GB2312

ADOQuery1.Close()

ADOQuery1.SQL.Text := 'SET NAMES GB2312'

ADOQuery1.ExecSQL()

//当将此句注释掉的话,存入数据库的内容变为乱码

ADOQuery1.Close()

ADOQuery1.SQL.Text := 'SET character_set_client = GB2312'

ADOQuery1.ExecSQL()

//当将此句注释掉得话,从数据库中读取的内容为乱码

ADOQuery1.Close()

ADOQuery1.SQL.Text := 'SET character_set_results = GB2312'

ADOQuery1.ExecSQL()

//当将此句注释掉的话,存入数据库的内容变为乱码

ADOQuery1.Close()

ADOQuery1.SQL.Text := 'SET character_set_connection = GB2312'

ADOQuery1.ExecSQL()

delphi 连接MySQL数据库

由于在Delphi 7中并没有提供对应MySQL4.0以上版本的dbexpress驱动(虽然在Borland的CodeCentral中有相关的驱动下载,但我却使用不了,不知道是否是我的方法不对),所以在使用前先下载MySQL 3.23.x的驱动libmysql.dll,下载后的

由于在Delphi 7中并没有提供对应MySQL4.0以上版本的dbexpress驱动(虽然在Borland的CodeCentral中有相关的驱动下载,但我却使用不了,不知道是否是我的方法不对),所以在使用前先下载MySQL 3.23.x的驱动libmysql.dll,下载后的libmysql.dll请放在Delphi安装目录的bin文件夹或者系统目录下或您的程序的目录中,否则dbexpress将无法找到它(出现错误提示:not load "libmysql.dll")。另外,如果libmysql.dll的版本不对会出现"invalid username/password"的错误提示。

TSQLConnection连接参数设置:

DriverName: MySQL

Host:本地:localhost;安装MySQL的计算机名/IP地地址

远程:安装MySQL的计算机名/IP地地址

Database:数据库名

UserName:MySQL用户名

Password:MySQL用户密码

LoginPrompt:false //不出现登录对话框

在使用前需要确定用户名和用户密码在MySQL中对于对应的数据库是否合法、有效。

数据组件:

推荐使用TSQLDataSet+TDataSetProvider+TclientDataSet+TdataSource+Data Control;或TSimpleDataSet+TdataSource+Data Control。

注意:不能使用TSQLDataSet+TdataSource+Data Control,否则在使用某些数据感知组件时会出现“operation not allowed on a unidirectional dataset”的错误提示,因为TSQLDataSet是单向的。

如果使用TSQLTable来使用数据有可能无法在TableName中列出所有的表名来。TSQLQuery和TSQLTable还是少用为妙。

如果那个DLL文件版本不对,可以考虑用ADO

TADOConnection的ConnectionString = 'DRIVER={MySQL ODBC 3.51

Driver}SERVER=MySQL数据库服务器DATABASE=数据库名字USER=用户

名PASSWORD=密码OPTION=3'

DRIVER={MySQL ODBC 3.51

Driver}SERVER=192.168.1.22DATABASE=ruleUSER=WJHPASSWORD=123456OP

TION=3

如果连接数据库后,dbgrid中会显示乱码,则在TADOConnection的

AfterConnect事件中增加代码:

ADOConnection1.Execute('set character_set_connection=gbk',cmdText)

ADOConnection1.Execute('set character_set_results=gbk',cmdText)

ADOConnection1.Execute('set character_set_client=gbk',cmdText)

本篇文章来源于:开发学院 http://edu.codepub.com 原文链接:http://edu.codepub.com/2010/0319/21181.php


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/7249714.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存