DAO 、ADO和ADO.NET

原创 2012年03月22日 11:38:40

1.什么是DAO(Data Access Objects)

DAO数据访问对象是一种应用程序编程接口(API),存在于微软的Visual Basic中,它允许开发者通过ODBC(Open Database Connectivity,是微软提出数据库访问接口标准)连接到Access数据库,对其进行访问。

2.什么是ADO(ActiveX Data Objects)

ADO是一项微软的技术,是ActiveX数据对象,是一个微软的Active-X组件(用于存储数据源的COM组件),是一个访问数据库中数据的编程接口(API),它会随微软的IIS被自动安装。ADO的内置对象有:Command、Conncetion、Error、Field、Parameter、Property、Record、Recordset、Stream。

就拿一个ASP页面内部访问数据库为例,访问数据库的步骤有:

(1)创建一个到数据库的ADO链接

(2)打开数据库连接

(3)创建ADO记录集

(4)从记录集提取需要的数据

(5)关闭记录集

(6)关闭连接

<html>
<body>
<%
	set conn = Server.CreateObject("ADODB.Connection")
	conn.provider = "Microsoft.Jet.OLEDB.4.0"
	conn.Open "c:/data/myDatabase.mdb"

	set rs = Server.CreateObject("ADODB.recordset")
	rs.Open "Select * from Students",conn

	do until rs.EOF
    	for each x in rs.Fields
      		Response.Write(x.name+"="+x.value"<br/>")
    	next
    	Response.Write("<br/>")
    	rs.MoveNext
	loop

	rs.close
	conn.close
%>
</body>
</html>

3.ADO.NET

ADO.NET起源于ADO,实在新的编程框架.NET Framwork中微软提供的一个面向Internet的版本的ADO,ADO.NET的对象模型与传统的ADO差别很大。

ADO.NET常用的对象有:Conncetion、Command、DataReader、DataAdapter、DataSet、DataTable、DataRow、DataCloumn。

在ASP.net中链接数据库的后台方法

protected void ShowData()
{
     	//实例化Conncetion对象
	SqlConnection connection = new SqlConnecion("Data Source=(local);Initial Catalog=AspNetStudy;Persist Security Info=True;User ID=sa;Password=sa");
     	//实例化Command对象
    	SqlCommand command = new SqlCommand("Select * from UseInfo",connection);  
      	//实例化Adapter对象
    	SqlDataAdapter adapter = new SqlDataAdapter(command);
      	DataTable dt = new DataTable();
      	//得到数据集
    	adapter.Fill(dt);

     	//循环输出数据集
    	for(int i=0;i<dt.Rows.count;i++)
     	{
          	Response.Write(dt.Rows[i]["UserId"].ToString());
          	Response.Write((bool.parse(data.Rows[i]["Sex"].ToString())==true?"男":"女"));          
     	}

}

注意:

(1)如果调用Fill()方法之前与数据库的链接已经关闭,则自动打开它以检索数据,执行完毕后再自动将其关闭。如果调用Fill()方法之前链接对象已经打开,则检索完毕后继续保持打开状态。

(2)一个数据集中可以存放多张数据表,但是每个数据适配器(Adapter)只能够对应于一张数据表。

4.DAO 转 ADO 注意的几点问题

 在语法上

(1)DAO 中的FIX()在ADO中要转成Round(x-0.5,0)

(2)DAO中 Delete * From 表 在ADO中转成 Delete From 表

(3)DAO中Format(Date,"yyyy/mm/dd") 在ADO中没有Format函数

(4)DAO中DataSetRecord.Edit 在ADO中没有.Edit方法

(5)DAO中iif(x=y,x,y) 在ADO中要转成Case When x=y Then x Else y End

(6)DAO中 Update 表 Inner Join 表1 On..... Set 表.字段=...

    在ADO中转成 Update 表 Set  表.字段=... From 表 Inner Join 表1 On.....

(7)DAO中Mid(3,3,表.字段) 在ADO中 substring(3,3,表.字段),如果是日期 就不能用substring ,而用Convert(varchar(10),Date,111)

注意:

Convert(varchar(10),Date,111)的意思是,将Data转成varchar型,并截取10位,111是Data转成varchar后显示的格式

1)11: yyyy/mm/dd

2)112: yyyymmdd

3)113: dd mm yyyy hh:mm:ss:mmm(24h)

4)114: hh:mi:ss:mmm(24)

Cast()也可以转换类型,如cast(expression AS data_type)

(8)DAO中的First()函数 返回每组记录的第一条记录 在ADO中换成ROW_NUMBER ( ) OVER(Partition by ... Order by ....)

在DAO中

SELECT 
     M026_TBL.KIKANCD,FIRST ( M026_TBL.KIKANNM ) AS 名称FROM M026_TBL
GROUP BY M026_TBL.KIKANCD
ORDER BY M026_TBL.KIKANCD

在ADO中

SELECT 
     A.KIKANCD , 
     A.KIKANNM AS 名称 
FROM 
     ( 
     SELECT 
          M026_TBL.KIKANCD , 
          M026_TBL.KIKANNM , 
          ROW_NUMBER ( ) OVER ( PARTITION BY M026_TBL.KIKANCD 
          ORDER BY 
               M026_TBL.KIKANCD 
               ASC ) AS ID 
     FROM 
          M026_TBL ) A 
WHERE 
     A.ID=1

5.ADO与ADO.NET的区别

(1)ADO使用OLE DB接口并基于微软的COM技术,而ADO.NET拥有自己的ADO.NET接口并且基于微软的.NET体系框架。

(2)ADO以Recordset存储,而ADO.NET则以DataSet表示。Recordset相当于表单,如果要进行多表的方式表示,就必须在SQL中进行多表的连接。而DataSet是多表的集合。

(3)ADO的运作是一种在线的方式,这意味着只要对数据库进行操作(增删查改)都必须链接数据库。而ADO.NET使用离线方式,在访问数据的时候ADO.NET会利用XML制作数据的一份副本,ADO.NET的数据库连接也只有在建立副本时连接。

ADO.NET在内存的副本的可以和实际物理数据库做类比,如图

ADO和ADO.NET的区别

不同点: 1.接口和基础不同: ADO:     接口:OLEDB    基于:COM技术 ADO.NET:  接口:自己的ADO.NET接口    基于:.NET体系架构 2...
  • YiQiJinBu
  • YiQiJinBu
  • 2013年11月04日 22:38
  • 1121

ADO.NET 概述

ADO.NET 是一种应用程序与数据源交互的 API,它支持的数据源包括数据库、文本文件、Excel 表格或者 XML 文件等。ADO.NET 封装在 System.Data 命名空间及其子命名空间(...
  • GongchuangSu
  • GongchuangSu
  • 2015年10月12日 18:18
  • 1999

Asp.net 和Ado.net的区别和不同

ASP.NET是建立在公共语言运行库上的编程框架,可用于在服务器上生成功能强大的 Web 应用程序。 与以前的Web开发模型相比,ASP.NET 提供了数个重要的优点: 增强的性能。 ASP.NE...
  • yuzifen
  • yuzifen
  • 2011年09月03日 17:20
  • 2722

WinForm入门--ADO.NET(简)

ADO.NET简单笔记
  • xiaojunjor
  • xiaojunjor
  • 2017年06月06日 16:03
  • 588

两种数据访问方式:从ADO 到ADO.NET

电脑最大的好处就是可以帮助人处理大量数据,由此离不开对数据库的访问,先看看最近在做ASP.NET例子的时候经常用到的ADO.NET的数据库访问方式。...
  • u010927640
  • u010927640
  • 2016年03月13日 17:17
  • 3275

ADO与ADO.NET 的区别

ADO与ADO.NET 都是一种数据库访问的方式,但是可以说ADO.NET是ADO的一种改进版。 在ADO的基础之上ADO.NET 统一了数据容器类编程接口,无论你打算用哪种编写哪种应用程序,都可以通...
  • huo_yun
  • huo_yun
  • 2013年08月27日 20:46
  • 2570

c++使用ADO和C#使用ADO.net

#include      #include   #include time.h>   #include   using   namespace   std;     #im...
  • Q_Q1111
  • Q_Q1111
  • 2014年10月09日 09:44
  • 178

ADO.NET Entity Framework与ADO.NET的区别

两者的区别: 1、采用EF进行开发只需要操作对象。使开发更对象化,抛弃了数据库中心的思想,完全的面向对象思想。ADO.NET以数据库为中心来开发数据访问层。 2、采用EF减少了数据处理工作,可以简...
  • wangzl1163
  • wangzl1163
  • 2017年06月07日 10:52
  • 1949

浅析ADO.NET五大对象

引言在数据库应用系统中,必定要涉及到对数据库的访问和操作,而ADO.NET则是微软在.NET Framework中负责数据访问的类的库集,那么理清ADO.NET中的五大对象对于我们理解ADO.NET无...
  • u013201439
  • u013201439
  • 2016年04月12日 23:19
  • 1598

ADO、DAO、ODBC、OLE DB 区别

ADO【ActiveX Data Objects】应用层的数据访问接口(API【Application Programming Interface,应用程序编程接口】)用以实现访问关系或非关系数据库中...
  • huanghi11
  • huanghi11
  • 2015年02月09日 10:12
  • 1390
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DAO 、ADO和ADO.NET
举报原因:
原因补充:

(最多只允许输入30个字)