一、ADO.NET是什么?
简单的说,ADO.NET是一组允许.NET开发人员使用标准的,结构化的,甚至无连接的
方式与数据交互的技术。对于ADO.NET来说,可以处理数据源是多样的。可以是应用程序
唯一使用的创建在内存中数据,也可以是与应用程序分离,存储在存储区域的数据(如
文本文件、XML、关系数据库等)。
ADO.NET是ADO(ActiveX Data Objects)的升级版本,是一个类库,主要用于.NET
Framework平台对数据的操作。提供一致的对象模型,可以存取和编辑各种数据源的数
据,即对这些数据源,提供了一致的数据处理方式。
具体来说,ADO.NET 对 Microsoft SQL Server 和 XML 等数据源以及通过 OLE DB
和 XML 公开的数据源提供一致的访问。数据共享使用者应用程序可以使用 ADO.NET 来
连接到这些数据源,并检索、处理和更新所包含的数据。
作为.NET框架的重要组成部分,ADO.NET 类封装在 System.Data.dll 中,并且与
System.Xml.dll 中的 XML 类集成。当编译使用 System.Data 命名空间的代码时,需要
引用System.Data.dll 和 System.Xml.dll。
二、对比
1、ADO.NET 和asp.net
ado.net是数据库的一种访问方式,不能与asp.net相提并论,asp.net是基
于.NetFramdwork 的网站开发技术。
在数据库访问主要使用ADO.NET方式,主要表现对象为:DataSet 内存加载数据方式!
ADO.NET方式与以前的ADO方式或者Oledb性能要强很多
2.ADO.NET和ADO关系
作为一个普通的缩略词,"ADO.NET”并只不是"ADO”的简单升级版本。严格的讲,
ADO.NET和ADO是两种截然不同的数据访问方式。
ADO的全称是Activex Data Objects,它是早期(.NET还未实施)开发人员用来访问数
据的组件。随着.NET的发展,ADO.NET顺其自然地以其显著的优越性逐步取代ADO。从技
术层面讲,ADO使用OLE DB接口并基于微软的COM技术,而ADO.NET拥有自己的ADO.NET接
口并且基于微软的.NET体系架构。
虽然大多数基于 .NET 的新应用程序将使用 ADO.NET 来编写,但 .NET 程序员仍然可
以通过 .NET COM 互操作性服务来使用 ADO。
<%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SqlClient" %> <script language="C#" runat="server"> void Page_Load(Object sender, EventArgs e) { SqlConnection Conn=new SqlConnection(); Conn.ConnectionString="server=(local);database=pubs;uid=sa;pwd=''"; Conn.Open(); SqlCommand Comm=new SqlCommand("select * from Authors ",Conn); SqlDataReader dr=Comm.ExecuteReader(); dg.DataSource=dr; dg.DataBind(); Conn.Close(); } </script> <asp:DataGrid id="dg" runat="server" /> Aeccess 数据库连接实例 (OleDbCommand 和 OleDbDataReader 使用实例) <%@ Page Language="C#" %> <%@ Import Namespace="System.Data"%> <%@ Import Namespace="System.Data.OleDb"%> <script Language="C#" Runat="Server"> OleDbDataReader dr; public void Page_Load(Object src,EventArgs e) { string myConnstring="provider=Microsoft.Jet.OLEDB.4.0; Data Source="+Server.MapPath(".")+"..\\DataBase\\db2.mdb;"; string strSel="Select * from BookMark"; OleDbConnection myConn= new OleDbConnection (myConnstring); OleDbCommand myComm=new OleDbCommand(strSel,myConn); myComm.Connection.Open(); dr=myComm.ExecuteReader(); dg.DataSource=dr; dg.DataBind(); myConn.Close(); } </script> <html> <body> <form Runat="Server"> <asp:DataGrid id="dg" runat="server" /> </form> </body> </html>
OleDbDataAdapter MyAdapter = new OleDbDataAdapter(strSelect,objConnection); <%@ Page Language="C#" Runat="Server"%> <%@ Import Namespace="System.Data"%> <%@ Import Namespace="System.Data.OleDb"%> <script Language="C#" Runat="Server"> public void Page_Load(Object src,EventArgs e) { string MyConnString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath(".")+"\\DataBase\\db3.mdb;"; string strSel="select * from Score"; //建立一个DataSet 实例 DataSet ds=new DataSet(); OleDbConnection MyConn= new OleDbConnection(MyConnString); OleDbDataAdapter MyAdapter = new OleDbDataAdapter(strSel,MyConn); MyAdapter.Fill(ds,"Score"); dg1.DataSource=ds.Tables["Score"].DefaultView; dg1.DataBind(); } </script> <asp:DataGrid id="dg1" runat="Server" Headerstyle-BackColor="#aaaadd" AlternatingItemstyle-BackColor="#eeeeee" />
<pre name="code" class="csharp">//新建一行 DataRow dr= ds.Tables[“Score”].NewRow(); dr. [“Name”] = “addme”; dr. [“class”] =”201”; ds.Tables[“Score”].Rows.Add(dr); //将新建的行加到DataTable 的DataRow集合中 这样对DataSet的操作仅仅是在DataSet中执行,并不影响数据库中的数据,要使用DataAdapter 的 Update 方法(有多种方法). 1. DataAdapter.Update(DataSet) ; 2. DataAdapter.Update(DataSet, TableName); 3.更新数据: 实际就是在DataSet 数据行上面直接修改数据 DataRow dr = ds .Tables[“Score”].Rows[0]; //取出第一行 dr. [“Name”] = “比尔”; //修改 dr. [“class”] =”201”;
If (DataSet.HasErrors) { DataSet.RejectChanges(); } else { DataSet.AcceptChanges(); }
小结:
ADO.NET为.NET构架提供了优化的数据访问模型,和基于COM的ADO是完全两样的数据访
问方式。也正因为ADO.NET基于XML格式,数据类型更为丰富并且不需要再做COM编排导致
的数据类型转换,从而提高了整体性能。
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/u013067756/article/details/46701085