刚开始用DELPHI,ADO方式。
数据源连接没问题,TADOConnection从弹出的数据链接属性里建立了链接字符
Provider=MSDASQL.1;Password=123456;Persist Security Info=True;User ID=root;Data Source=mysql_conn;Initial Catalog=mysql那我要使用的话还要怎么样写,直接在下面用
  ADOQuery1.close;
  ADOQuery1.sql.Text:='select * from user';
  ADOQuery1.open;
就报 没有打开的数据cannot perform this operation on a close dataset.
ADOQuery1上面还要怎么写,才能打开这个数据表呢,找了很多资料看,没头绪,求一ADO完整链接MYSQL5 的代码,谢谢。

解决方案 »

  1.   

    首先得把TADOConneciton连接上,加入是ADOCONNECTION1
    则      ADOCONNECTION1.connected:=false;
          ADOCONNECTION1.connectionstring:=Provider=MSDASQL.1;Password=123456;Persist Security Info=True;User ID=root;Data Source=mysql_conn;Initial Catalog=mysql';
          ADOCONNECTION1.LoginPrompt:=false;
          ADOCONNECTION1.connected:=true;      ADOQuery1.close; 
          ADOQuery1.Connection:=ADOCONNECTION1;
          ADOQuery1.sql.clear;
          ADOQuery1.sql.add('select * from user'); 
          ADOQuery1.open; 
      

  2.   

    当然也可以像你写sql.text那种写法;
      

  3.   

    感谢回答,不过还是报cannot perform this operation on a close dataset是不是我用的驱动有问题?
    我没有用那个3.51的MYSQL ODBC,用的
    mysql-connector-odbc-5.1.4-win32.msi
    不过数据源连接都没问题呢。
      

  4.   

    同样代码,数据源我换ACCESS,就没有问题,问题在哪里呢?
      

  5.   

    access和连接mysql是不一样的
    但你的提示主要是dataset已经关闭了的提示,所以还是应该从语句分析,调试代码跟一下,看看dataset是在什么时候关闭的,究竟为什么会出现这个提示,多打几个断点,多调试几次,还有就是你看一下数据链接的高级属性是怎么设置的,就是手工建立connecitonstring的那个高级栏
    继续关注
      

  6.   

    如果连接没问题
    多半不会是这段报的错
    连MYSQL
    有个3方组件 MyDAC 2ccc上有下
    不错的
      

  7.   

    直接在控件里面设置数据源和连接吧!
    步骤:1、先拖出这四个控件:DBGrid,DataSource,ADOConnection,ADOQuery
         2、在ADOConnection控件中的ConnectionString的属性中写中你的数据库连接的命令,比如:Provider=MSDASQL.1;User ID=root;Extended Properties="DATABASE=dataBase_name;DRIVER={MySQL ODBC 3.51 Driver};OPTION=3;PORT=3306;SERVER=127.0.0.1;UID=root"
         3、在ADOConnection控件中的Connected属性设置为:ture,user写你的mysql目前登陆的帐号,如果用默认的是root,密码为空。
         4、选择DataSource控件,把该控件中的DataSet属性设置为ADOQuery1。
         5、选择ADOQuery控件,把该控件中的Connection属性设置为ADOConnection1。
         6、选择DBGrid控件,把该控件中的DataSource属性设置为DataSource1
        7、完成以上的步骤后,把以下这几句话写在在button的事件里,就能读取出表了
    var
     str:String;
    begin
     str:='select * from table_name';
     self.ADOQuery1.Close;
     self.ADOQuery1.sql.Clear;
     self.ADOQuery1.sql.Add(str);
     self.ADOQuery1.Open;
    end;