在网上查了很多资料,大家都是转来转去,没有说清楚的。Q1. 通过ODBC连接mysql需要mysql的驱动,那么通过ADO连接需要驱动吗?是mysql OLEDB的驱动吗?还是其他什么?Q2. 对于其他数据库,例如access,oracle,ADO都需要他们各自的驱动吗?还是微软自己就已经做好在ADO API里面了?Q3. 看到网上说的ADO和ODBC的区别就是ADO不需要每次都设置数据源连接,这就把我搞糊涂了,是ADO不需要驱动的意思呢?还是ADO不需要设置,能够在程序里面编程来实现设置?Q4. 为什么用ADO连接数据库,也可以通过ODBC来实现?(好像是通过udl文件获得字符串什么的)THANKS!
对ADO,而不是ADO.NET来说,安装同样的ODBC驱动,然后由ADO来调用OLEDB,而OLEDB调用ODBC接口,下图描述了这种关系。
Q2. 对于其他数据库,例如access,oracle,ADO都需要他们各自的驱动吗?还是微软自己就已经做好在ADO API里面了?其他数据库需要安装驱动,但你列出的两种ACCESS和ORACLE,WINDOWS已经默认安装了驱动。
参考上图,已经很清晰的描述了为什么。
至少myodbc可以不用设置数据源,在连接串中编写{driver=MySQL odbc xxx},而不用在odbc控制板添加数据源。
可以贴一个完整的连接串么??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我先配置数据源,再连接的。
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 +'"';
...