一、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