我用delphi在ADO方式下连接Mysql数据库,在执行select语句时adoquery组件总是会报错: “未指定的错误”,奇怪的是换了Insert语句却可以成功执行。很郁闷,烦请高手指点,代码如下:procedure TForm1.BitBtn1Click(Sender: TObject);
begin
    adoquery1.Close;
    adoquery1.SQL.Clear;
    adoquery1.SQL.add('select * from statistic');//该select语句返回未指定错误
    //adoquery1.SQL.add('insert into statistic (t_id, calendar,  access_count) values(1,"2004-03-02",100)');//insert语句却可以成功插入数据,这是为什么呢??
    adoquery1.open;end;--------- ADO 其他组件的属性--------
 object ADOConnection1: TADOConnection
    Connected = True
    ConnectionString = 
      'Provider=MSDASQL.1;Password=root123;Persist Security Info=True;U' +
      'ser ID=root;Data Source=hpjx;Mode=ReadWrite'
    LoginPrompt = False
    Mode = cmReadWrite
    Left = 40
    Top = 8
  end
  object ADOQuery1: TADOQuery
    Connection = ADOConnection1
    Parameters = <>
    Left = 104
    Top = 24
  end我觉得这会不会是ADO的一个bug呢?我的系统是xp+ delphi7 + mysql-4.0.14b-win + MyODBC-3.51.03。谢谢!

解决方案 »

  1.   

    应该是你delphi或myodbc没装好吧。如果是这样简单的语句,是不可能出错的啊。
      

  2.   

    你把 select * from statistic 改为:select * from "statistic"试试。
      

  3.   

    这样应该不是bug,这个都不能执行的话,那这个bug 玩笑开大了。呵呵。
    在检查看看有什么地方没设置好。
      

  4.   

    是不是应该这样:
        adoquery1.Close;
        adoquery1.SQL.Clear;
        adoquery1.SQL.add('select * from statistic');
        adoquery1.open;
        adoquery1.SQL.Clear;
        adoquery1.SQL.add('insert into statistic (t_id, calendar,  access_count) values(1,"2004-03-02",100)');
        adoquery1.ExecSql;
    出错指示的地方不一定绝对准确,查一查其他地方有没有问题!
      

  5.   

    终于找到问题了!!
    这真的是一个bug,而且很可能是由于myodbc的问题。我到www.mysql.com下载了最新的MyODBC-3.51.11-2-win.exe替换了原来的MyODBC-3.51.03.exe,并且下载安装了MDAC2.8.EXE,问题就解决了。
    呜呜~~花了偶一整天的时间啊。谢谢各位!还有一个问题:请问delphi7里面带的ado是什么版本的呢?已经是2.8的了吗?
      

  6.   

    是啊,不知道为什么还没有升级,是不是等delphi8。0一起出来
      

  7.   

    这个问题,你得去问一下微软,MDAC是他家的东西。可能是有ADO.net的关系吧,才不升级了。
      

  8.   

    啊,ADO可以连接MYSQL,怎么连接的啊?麻烦告诉下!
      

  9.   

    我也遇到了与你相似的问题(没有用mysql,但使用了ADO),但没有你那么运气好,问题到再还没解决
      

  10.   

    dephi7中ADO并无版本,而决定于操作系统的ADO版本,如果系统原MDAC是2.0,重新安装MDAC2.7后,ADO版本将变为2.7。所以用delphi开发数据库程序时,要特别注意ADO版本问题,如果开发系统的ADO和用户机器的ADO版本不一致,将会导致执行数据库操作发生错误。
      

  11.   

    select 用adoquery1.open;
    insert 用adoquery1.execute;
    我的SQL SERVER 是这样的,呵呵,见笑了!
      

  12.   

    游标的OPTIONS看看,肯定设置错误了
      

  13.   

    mysql 与  ADo 兼容性不太好,MYODBC 也做得不是很好,最好用最新的 MYodbc 本身他自己也在不断完善中
      

  14.   

    可以用SQL Sever 啊
      

  15.   

    哈哈,不能用open,要用execsql