DAO 、ADO和ADO.NET
来源:互联网 发布:阿里云更换地域 编辑:程序博客网 时间:2024/06/06 13:15
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",conndo until rs.EOF for each x in rs.Fields Response.Write(x.name+"="+x.value"<br/>") next Response.Write("<br/>") rs.MoveNextlooprs.closeconn.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_TBLGROUP BY M026_TBL.KIKANCDORDER 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在内存的副本的可以和实际物理数据库做类比,如图
- DAO 、ADO和ADO.NET
- ADO、ADO.net、DAO
- DAO RDO ADO ADO.NET
- ADO和ADO.NET
- ODBC和ADO DAO
- ado和ado.net比较
- ADO和ADO.net区别
- 微软的 DAO,RDO,OLE DB, ADO,ADO.NET
- ADO.NET (二)—— ADO和ADO .NET对比
- JDBC和ADO .NET
- Oracle 和 ADO.NET
- ADO和ADO.NET的比较
- ADO.NET 和 ADO 的比较
- ADO和ADO.NET的区别
- ADO和ADO.NET的区别
- ADO.NET 和 ADO 的比较
- ADO和ADO.NET的区别
- ADO.NET 和 ADO 的比较
- 判断两个时间相差多少天多少分多少秒
- 针对搜索引擎最佳方式:8个步骤优化网站
- Android DisplayMetrics类简介
- C++ 内存常识学习----(一)
- 如何生成robots.txt?
- DAO 、ADO和ADO.NET
- Java遍历文件夹的两种方法(非递归和递归) .
- Ecshop2.7整合UC的整合过程和卸载办法
- 使用Equinox框架进行OSGi环境下的Web开发
- 关于项目中文字国际化的几点体会
- 用RMI建立一个分布式Java应用程序详解
- 把Date类型的数据加一天
- Java生产者消费者问题 .
- ecshop 二次开发,源码分析