Delphi XE3连接远程MYSQL全过程解析
今日在再次写代码的时候发现以前经常用的DELPHI连接MYSQL怎么不能用了。应该是我换了64位的操作系统,以前的配置都丢失的缘故。
回想当时也是研究了一些时间,现在发现忘记了又要从新研究,就不如一次把所有的流程都记录下来,方便以后自己再忘记就不是很好了。
我当前的环境是64位电脑+Delphi XE3,相比之前的32位电脑,这里就要区分好当前的操作系统是32位还是64位的。
首先第一步需要下载安装MYSQL连接的驱动文件。我这里下载的是64位的,文件名为:mysql-connector-odbc-5.2.5-winx64
然后需要配置一下ODBC源。
ODBC源在 控制面板->数据源->ODBC数据源
网上传言ODBC也分32位和64位,具体位置在
64位版的位置:C:\windows\system32\odbcad32.exe
32位版的位置:C:\windows\sysWOW64\odbcad32.exe
我个人没有测试区别来。我64位的系统,在控制面板中打开就是64位的,至少我是这样认为的。
然后是添加数据源,记得选择当前电脑安装的数据源
这里我选择的是 MySql ODBC 5.2 Unicode Driver的版本 (ANSI Driver是指 单一的语言支持 Unicode Driver是多语言的支持)
点击完成后就是下图输入服务器的账号和密码
分别写入数据源名称、数据源描述、数据库的账号和密码和服务器地址,添加完毕后可以点击Test。
然后在DELPHI中添加控件ADOConnection1 双击控件修改配置连接文件
可以选择 添加连接文件和使用连接的字符串,连接文件会把密码暴露在文件中,连接字符串修改和移植的时候比较麻烦操作。
配置连接文件快速创建办法是可以新建一个文件夹xdfexam.udl 后缀是 UDL双击打开,就到了配置服务器账号密码的地方了
点击 编译和新建、创建数据库源
和前面说的一样选择数据源即可。
浏览保存到指定位置,连接文件已经创建完成,之后又是配色服务器账号密码的地方。
连接数据库是需要在ADOConnection1 中选择 LoginPrompt 选择false,意思是在每次连接数据库的时候无需弹出密码登入框
最后的问题,如果出现"[Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配"。的问题 需要确认当然编译的程序是否与对应的MYSQL连接驱动培训想匹配
就是看看64位的mysql数据源是否编译的64位的程序,Delphixe3中设置64位和32位的地方见下图
并且右键激活 64位的编辑即可
最后是数据库连接的代码和测试代码
数据控件连接代码如下
procedure TForm1.FormCreate(Sender: TObject);
begin
form1.AdoQuery1.Connection := AdoConnection1;
form1.DBGrid1.DataSource := DataSource1;
form1.DataSource1.DataSet := AdoQuery1;
end;
测试连接数据库代码
procedure TForm1.Button1Click(Sender: TObject);
begin
//form2.Caption:='查询数据库';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from exam_user') ;
ADOQuery1.Open;
ADOQuery1.ExecSQL;
end;
另外如果你也才有WAMP这种快捷的mysql服务的话,请确认你的Mysql的版本是否与Mysql的连接器的版本符合
如果使用5.0的Mysql却使用最新的Mysql的连机器自然会出错。
错误的信息就是:"参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突"
这种情况下可以换一个较低版本的连机器喽 我用的是
mysql-connector-odbc-3.51.30-winx64
最后还需要把一个mysql的DLL文件放在 bin目录下,此时,delphi连接远程mysql任务已完成
Comments