DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: tkzcol
今日帖子: 4
在线用户: 7
导航: 论坛 -> 数据库专区 斑竹:liumazi,waterstone  
作者:
男 andreabocelli (Andrea Bocelli) ★☆☆☆☆ -
普通会员
2013/3/10 21:42:52
标题:
delphi xe2 利用 dbexpress 连接 mysql 问题 浏览:2461
加入我的收藏
楼主: 代码如下:
var
   SQLConnection: TSQLConnection;
   SQLQuery: TSQLQuery;
 begin
   SQLConnection := TSQLConnection.Create(Self);
   SQLQuery := TSQLQuery.Create(Self);
   try
     SQLConnection.ConnectionName := 'MySQLConnection';
     SQLConnection.LoginPrompt := False;
     SQLConnection.LoadParamsOnConnect := False;
     SQLConnection.DriverName := 'MySQL';
     SQLConnection.Params.Clear;
     SQLConnection.Params.Add('HostName=.,3306');
     SQLConnection.Params.Add('Database=test');
     SQLConnection.Params.Add('User_Name=root');
     SQLConnection.Params.Add('Password=csit2012!@#');
     SQLConnection.Params.Add('ServerCharSet=utf8');
     SQLConnection.Params.Add('ConnectTimeout=60');
     SQLConnection.Connected := True;
     SQLQuery.SQLConnection := SQLConnection;
     SQLQuery.SQL.Text := 'select * from city';
     SQLQuery.Open;
     ShowMessage(IntToStr(SQLQuery.RecordCount));
     SQLQuery.Close;
   finally
     SQLQuery.Free;
     SQLConnection.Free;
   end;
 end;
这是我用dbextress连接的代码  代码应该没啥问题 
我觉得是不是mysql的版本问题
 现在mysql版本是5.5的 连接的时候报错如下:
DBX Error: 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.
网络上也找了解决办法 如下:
http://www.xue5.com/Developer/Delphi/631955.html
但是按照这个办法 问题依然存在
 还请大家指教   谢谢。。
----------------------------------------------
-
作者:
男 herui (hi) ★☆☆☆☆ -
普通会员
2013/3/11 7:19:38
1楼: 为什么不用unidac呢?很方便的。
----------------------------------------------
delphier
作者:
男 zhangpuqing (pupu) ★☆☆☆☆ -
普通会员
2013/3/11 9:38:17
2楼: 你试一下,先不用代码连.直接设置dbexpress的参数连.
如果能连上就是代码问题.
如果连不上,应该是差mysql的驱动所至.
我的判断是差mysql的DLL驱动所至.
----------------------------------------------
-
作者:
男 andreabocelli (Andrea Bocelli) ★☆☆☆☆ -
普通会员
2013/3/11 11:02:16
3楼: 驱动没问题啊。  我已经按照步骤弄清楚了。 
直接在控件上设置也是如此。
按理说应该非常顺才对 不太喜欢用第三方控件 最好delphi自家控件能搞定
3方控件 跟mysql版本相关
看中用dbexpress就是他走的是 调用mysql自带驱动 这样版本升级 只要dll换下即可 很好的。
----------------------------------------------
-
作者:
男 t27 (koney) ★☆☆☆☆ -
普通会员
2013/3/11 11:53:02
4楼: SQLConnection.Params.Add('HostName=.,3306');
是否有誤?
----------------------------------------------
-
作者:
男 andreabocelli (Andrea Bocelli) ★☆☆☆☆ -
普通会员
2013/3/11 12:29:58
5楼: 这个没错。
----------------------------------------------
-
作者:
男 andreabocelli (Andrea Bocelli) ★☆☆☆☆ -
普通会员
2013/3/11 12:34:58
6楼: 代码调整了下  加了端口 详细代码如下:
var
  SQLConnection: TSQLConnection;
  SQLQuery: TSQLQuery;
begin
  SQLConnection := TSQLConnection.Create(Self);
  SQLQuery := TSQLQuery.Create(Self);
  try
    SQLConnection.ConnectionName := 'MySQLConnection';
    SQLConnection.LoginPrompt := False;
    SQLConnection.LoadParamsOnConnect := False;
    SQLConnection.DriverName := 'MySQL';
    SQLConnection.Params.Clear;
    SQLConnection.Params.Add('HostName=127.0.0.1');
    SQLConnection.Params.Add('Port=3306');
    SQLConnection.Params.Add('Database=mysql');
    SQLConnection.Params.Add('User_Name=root');
    SQLConnection.Params.Add('Password=');
    SQLConnection.Params.Add('ServerCharSet=utf8');
    SQLConnection.Params.Add('ConnectTimeout=60');
    SQLConnection.Connected := True;
    SQLQuery.SQLConnection := SQLConnection;
    SQLQuery.SQL.Text := 'select * from user;';
    SQLQuery.Open;
    ShowMessage(IntToStr(SQLQuery.RecordCount));
    SQLQuery.Close;
  finally
    SQLQuery.Free;
    SQLConnection.Free;
  end;
end;
代码应该是没问题的了
我mysql版本是:mysql-5.6.10-win32
delphi版本是:delphi xe2
早上在网络上找了很多 下了一个别人提供的libmysql.dll sqlconnect居然可以连接成功了 但是当代码执行到sqlquery的open的时候 报错了
错误信息是:DBX Error: Unsupported field type
我觉得 可能还是这个dll有问题。
----------------------------------------------
-
作者:
男 andreabocelli (Andrea Bocelli) ★☆☆☆☆ -
普通会员
2013/3/11 18:04:58
7楼: 自己再顶下这个问题。。。
----------------------------------------------
-
作者:
男 zhangpuqing (pupu) ★☆☆☆☆ -
普通会员
2013/3/11 19:35:57
8楼: 直接控连都报旬的话就肯定是驱动问题了。我以前遇过
那个DLL要重新下过
----------------------------------------------
-
作者:
男 hncsl (hncsl) ★☆☆☆☆ -
普通会员
2013/3/11 20:09:46
9楼: 这个是xe2连接mysql的驱动问题。在网上找找。原来做过这个测试,后来找了一个连接驱动,替换一下就可以了。哪个驱动叫什么给忘了。
----------------------------------------------
-
作者:
男 andreabocelli (Andrea Bocelli) ★☆☆☆☆ -
普通会员
2013/3/12 10:59:23
10楼: 求助ing。。。我找了好多驱动 驱动不就是在mysql的bin下面吗? 直接copy他就好了嘛。。 可是还是不行。。
----------------------------------------------
-
作者:
男 andreabocelli (Andrea Bocelli) ★☆☆☆☆ -
普通会员
2013/3/12 15:22:07
11楼: 继续顶。。。
----------------------------------------------
-
作者:
男 andreabocelli (Andrea Bocelli) ★☆☆☆☆ -
普通会员
2013/3/13 9:08:55
12楼: 放弃dbexpress了 决定用unidac
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行109.375毫秒 RSS