在网上查了很多资料,大家都是转来转去,没有说清楚的。Q1. 通过ODBC连接mysql需要mysql的驱动,那么通过ADO连接需要驱动吗?是mysql OLEDB的驱动吗?还是其他什么?Q2. 对于其他数据库,例如access,oracle,ADO都需要他们各自的驱动吗?还是微软自己就已经做好在ADO API里面了?Q3. 看到网上说的ADO和ODBC的区别就是ADO不需要每次都设置数据源连接,这就把我搞糊涂了,是ADO不需要驱动的意思呢?还是ADO不需要设置,能够在程序里面编程来实现设置?Q4. 为什么用ADO连接数据库,也可以通过ODBC来实现?(好像是通过udl文件获得字符串什么的)THANKS!

解决方案 »

  1.   

    Q1. 通过ODBC连接mysql需要mysql的驱动,那么通过ADO连接需要驱动吗?是mysql OLEDB的驱动吗?还是其他什么?
    对ADO,而不是ADO.NET来说,安装同样的ODBC驱动,然后由ADO来调用OLEDB,而OLEDB调用ODBC接口,下图描述了这种关系。
    Q2. 对于其他数据库,例如access,oracle,ADO都需要他们各自的驱动吗?还是微软自己就已经做好在ADO API里面了?其他数据库需要安装驱动,但你列出的两种ACCESS和ORACLE,WINDOWS已经默认安装了驱动。
      

  2.   

    这是把ODBC单纯的理解为OBDC数据源了。 在WINDOWS的控制面板中可以设置ODBC数据源,
    参考上图,已经很清晰的描述了为什么。
      

  3.   

    3,不是正确的,ado或odbc都可以不用设数据源,直接在编程里写连接字符串。
    至少myodbc可以不用设置数据源,在连接串中编写{driver=MySQL odbc xxx},而不用在odbc控制板添加数据源。
      

  4.   


    可以贴一个完整的连接串么??Sub main()
        cnnstr = "Provider=MSDASQL.1;Password=123;Persist Security Info=True;User ID=cpc;Data Source=CPC;Initial Catalog=cpc"
        cnn.ConnectionString = cnnstr
        cnn.Open
    If Err.Number = 0 Then Form1.Show
    End Sub我先配置数据源,再连接的。
      

  5.   

    不用设dsn,直接以driver为连接字符串以dephi为例 myodbc+ado
    driver后面的字符串必须严格为控制面版中该odbc的driver名称,
    另种写法加{},如Driver={MySQL ODBC 3.51 driver};
    我在其他开发语言如PB, VFP等, 这样都可以的,根本就不用设dsn
    d_s:='Driver=MySQL ODBC 3.51 driver;'+
         'DB=public;SERVER=xxx.xxx.xxx.xxx;UID=xxx;PWD=xxx;PORT=3306;'+
         'OPTION=16643;STMT=SET names gbk;'s_sql:='Provider=MSDASQL.1;Persist Security Info=True;Extended Properties="'
              + d_s +'"';
    ...