微软公司的ADO(ActiveX Data Objects)是一个用于访问数据源的COM组件,作为高层的编程界面层。ADO是在OLE DB之上,包含了很多层次化的COM对象与集合(Collections,也是一类对象,在其里面包含了其他层级对象)。允许开发人员编写访问数据的代码而不用关心数据源是如何实现与访问驱动的,而只用关心到数据库的连接。访问数据库的时候,关于SQL的知识不是必要的,但是特定数据库支持的SQL命令仍可以通过ADO中的命令对象(Command)来执行。
ADO被设计来替代微软早期的数据访问对象层(包括RDO(Remote Data Objects)和DAO(Data Access Objects))。ADO在1996年8月与OLE DB一起被发布。
ADO文件通常保存在C:\Program Files (x86)\Common Files\System\ado\目录下。
2003年后在新的编程框架.NET Framework中,微软提供了一个面向Internet的版本的ADO,称为ADO.NET,其对象模型和ADO差别很大,基本上需要重新彻底学习。
No bulletin发布
bug修复
Microsoft.Jet.OLEDB.X.0和Microsoft.ACE.OLEDB.1Y.0的区别:
ADO包含12个对象:
"Provider='SQLOLEDB';Data Source='TheSqlServerName'; Initial Catalog='Northwind';Integrated Security='SSPI';"
ADO包含4个collection:
ADO组件的使用需要利用支持COM的高级语言,例如ASP中的VBScript或者Visual Basic,甚至微软的竞争对手Borland的产品Delphi,,现在也支持使用ADO来访问数据库。
使用ADO存取資料的一些基本步驟:
下列的ASP範例使用ADO於"Phonebook"表中選取"Name"欄位,其中"PhoneNumber"等於"555-5555"。
dim myconnection, myrecordset, name set myconnection = server.createobject("ADODB.Connection") set myrecordset = server.createobject("ADODB.Recordset") myconnection.open mydatasource myrecordset.open "Phonebook", myconnection myrecordset.find "PhoneNumber = '555-5555'" name = myrecordset.fields.item("Name") myrecordset.close set myrecordset = nothing set myconnection = nothing
這相當於下列的ASP code,以plain SQL取代Recordset object:
dim myconnection, myrecordset, name set myconnection = server.createobject("ADODB.connection") myconnection.open mydatasource set myrecordset = myconnection.execute("SELECT Name FROM Phonebook WHERE PhoneNumber = '555-5555'") name = myrecordset(0)
AfxOleInit();//COM库的初始化 #import "c:\program files\common files\system\ado\msado15.dll " no_namespace rename( "EOF ", "adoEOF ") //系统生成msado15.tlh,ado15.tli两个头文件来定义ADO库 _ConnectionPtr m_pConnection; //指向Connection对象的指针 HRESULT hr; hr = m_pConnection.CreateInstance( "ADODB.Connection ");///创建Connection对象 if(SUCCEEDED(hr)) { //连接数据库: hr = m_pConnection-> Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb ", " ", " ",adModeUnknown); //未设置第二个参数UserID、第三个参数Password } //上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51; /*第四个参数Options可以取值为: adModeUnknown:缺省。当前的许可权未设置 adModeRead:只读 adModeWrite:只写 adModeReadWrite:可以读写 adModeShareDenyRead:阻止其它Connection对象以读权限打开连接 adModeShareDenyWrite:阻止其它Connection对象以写权限打开连接 adModeShareExclusive:阻止其它Connection对象打开连接 adModeShareDenyNone:允许其它程序或对象以任何权限建立连接 */
ADO包含的对象能够创建、维护、删除给定数据源的记录。但是,创建与管理数据库及其所包含的对象,ADO就力有不逮了。为此,ADOX,即Microsoft ADO Ext. for DDL and Security,提供了这方面的功能,主要包括Data Definition Language(DDL)对象及安全管理。此外,Jet数据库引擎的许多功能都是ADO与ADOX不具备的;JRO,即Microsoft Jet and Replication Objects 2.5 Library提供了这方面的补充功能。