一、ADO.NET简介

ADO.NET的名称起源于ADO(ActiveX Data Objects),这是一个广泛的类组,用于在以往的Microsoft技术中访问数据。用来访问数据库,.NET环境下首选的数据库访问接口。ADO.NET对象在应用程序和数据库间扮演者“桥梁”角色.

图1:整个应用程序的运行机制

二、两种连接方式简介

访问数据库ADO.NET提供了两种模式:连接模式和非连接模式。

1、连接模式:利用DataReader对象实现数据库连接模式

(1)使用Connection对象连接数据库。

(2)使用Command(命令)对象向数据库索取数据。

(3)把取回来的数据放在DataReader(数据阅读器)对象中进行读取。

(4)完成读取操作后,关闭DataReader对象.

(5)关闭Connection对象。

提示:ADO.NET的连接模式只能返回向前的、只读的数据,这是因为DataReader对象的特性决定的。

    public partial class DataRead : System.Web.UI.Page  

        {
protected void Page_Load(object sender, EventArgs e)
{
string str = "server=localhost;uid=sa;pwd=123456;database=DataTest";
SqlConnection conn = new SqlConnection(str); SqlCommand cmd = new SqlCommand("select * from student", conn); conn.Open(); SqlDataReader rdr = cmd.ExecuteReader(); DataTable table = new Datable();
table.Load(rdr);
rdr.Close();
conn.Close();
} }  

2、非连接模式:利用DataAdapter对象实现数据库断开模式

(1)使用Connection对象连接数据库。

(2)使用Command对象获取数据库的数据。

(3)把Command对象的运行结果存储在DataAdapter(数据适配器)对象中。

(4)把DataAdapter对象中的数据填充到DataSet(数据集)对象中。

(5)关闭Connection对象。

(6)在客户机本地内存保存的DataSet(数据集)对象中执行数据的各种操作。

(7)操作完毕后,启动Connection对象连接数据库。

(8)利用DataAdapter对象更新数据库。

(9)关闭Connection对象。

    public partial class DataRead : System.Web.UI.Page  

        {  

            protected void Page_Load(object sender, EventArgs e)  

            {
string str = "server=localhost;uid=sa;pwd=123456;database=DataTest";
SqlConnection conn = new SqlConnection(str);
string sql = "select * from student"; SqlDataAdapter adp = new SqlDataAdapter(sql, conn);//Adepter对象 DataSet ds = new DataSet();//DataSet对象
adp.Fill(ds, "stu");//填充DataSet 并为当前表命名 DataTableReader rdr = ds.CreateDataReader(); while (rdr.Read())//读取表中数据
{
Response .Write("第n条数据");
}
}
}

三、两种连接方式优缺点

1、连接环境

优点:

环境易于实施安全控制

同步问题易于控制

数据实时性优于其他环境

缺点

必须保持持续的网络连接

扩展性差

2、非连接环境

中央数据存储的一部分数据可以被独立地复制与更改,在需要时可以与数据源中的数据合并

优点

可以在任何需要的时间进行操作,在必要时才连接到数据源

不独占连接

非连接环境的应用提高了应用的扩展性与性能

缺点

数据不是实时的

必须解决数据的并发性与同步问题

对于C/S结构,连接模式还是一个不错的模式,在B/S结构,或者分布式的环境中,还是使用断开模式比较好。一方面是扩展性比较好,另外一个方面是效率会比较高,相对于采用连接模式来说。这取决于Connection是否还是需要象在传统的C/S结构中使用单件模式创建一个共享的Connection,还是象在每一个页面都创建自己的Connection.

四、区别

SqlDataReader从字面上看数据读取,在读取数据的过程中一直与数据库保持连接,适合数据量小的情况,执行效率还是可以的。

SqlDataAdapter(数据适配器)可以说建立一个"本地数据库"--DataSet,先将数据取出来放到dataset中,然后就可以关闭数据库了,通过sqldataadapter还可以更新删除数据库中的东西,可以通过封装的Update等方法同步到数据库,这样服务器的资源消耗就少,可以同时支持更多并发的客户机。当然,这需要DataSet对象的支持和配合才能完成,这是ADO.NET的卓越之处。

两种模式都可以搭配DataSet和DataTable使用。

五、适用范围

1、连接

数据量小,系统规模不大、客户机和服务器在同一网络内的环境,只读的情况下优先选DataReader

2、非连接

适合网络数据量大、系统节点多、网络结构复杂,尤其是通过Internet/Intranet进行连接的网络。需要绑定数据远的情况下,需要修改数据同时更新到数据库(非连接)

注:没有那种模式是绝对的,根据自己的需要情况,各取所需,这样节省资源,提高效率,达到事半功倍的效果。

ADO.NET—两种连接模式的更多相关文章

  1. sftp及两种连接模式简介

    sftp是ssh内含的协议,只要sshd服务器启动了,它就可用,它本身不需要ftp服务器启动. FTP服务器和客户端要进行文件传输,就需要通过端口来进行.FTP协议需要的端口一般包括两种: 控制链路- ...

  2. FTP 两种连接模式

    简介 FTP协议要用到两个TCP连接, 一个是命令连接,用来在FTP客户端与服务器之间传递命令:另一个是数据连接,用来上传或下载数据.通常21端口是命令端口,20端口是数据端口.当混入主动/被动模式的 ...

  3. 一步一步学FRDM-KE02Z(一):IAR调试平台搭建以及OpenSDA两种工作模式设置

    摘要:FRDM-KE02Z是飞思卡尔公司较为新的微控制器,学习和开发资料较少.从本篇开始会陆续介绍其相关的开发流程,并完成一个小型的工程项目.这是本系列博客的第一篇,主要介绍开发环境IAR for A ...

  4. 【转帖】两种IO模式:Proactor与Reactor模式

    两种IO模式:Proactor与Reactor模式 https://www.cnblogs.com/pigerhan/p/3474217.html. 挺好的说明了epoll和IOCP的区别 在高性能的 ...

  5. java web学习总结(二十九) -------------------JavaBean的两种开发模式

    SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...

  6. ASP.Net的两种开发模式

    一.ASP.Net的两种开发模式 1.1 ASP.Net WebForm的开发模式 (1)处理流程 在传统的WebForm模式下,我们请求一个例如http://www.aspnetmvc.com/bl ...

  7. Spark on YARN两种运行模式介绍

    本文出自:Spark on YARN两种运行模式介绍http://www.aboutyun.com/thread-12294-1-1.html(出处: about云开发)   问题导读 1.Spark ...

  8. javaweb学习总结(二十一)——JavaWeb的两种开发模式

    SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...

  9. spark on mesos 两种运行模式

    spark on mesos 有粗粒度(coarse-grained)和细粒度(fine-grained)两种运行模式,细粒度模式在spark2.0后开始弃用. 细粒度模式 优点 spark默认运行的 ...

随机推荐

  1. 微信应用号开发知识贮备之altjs官方实例初探

    天地会珠海分舵注:随着微信应用号的呼之欲出,相信新一轮的APP变革即将发生.从获得微信应用号邀请的业内人士发出来的一张开发工具源码截图可以看到,reacjs及其相应的FLUX框架altjs很有可能会成 ...

  2. java ResultSet 结果集处理 createStatement() 里参数的意义(第一弹)

    createStatement(int   resultSetType,int  resultSetConcurrency)参数一:结果集类型可取值:  1.ResultSet.TYPE_FORWOR ...

  3. POJ 2553 The Bottom of a Graph (强连通分量)

    题目地址:POJ 2553 题目意思不好理解.题意是:G图中从v可达的全部点w,也都能够达到v,这种v称为sink.然后升序输出全部的sink. 对于一个强连通分量来说,全部的点都符合这一条件,可是假 ...

  4. HBuilder HTML 自定义代码块

    =begin 本文档是HTML代码块的编辑文件.注意不要把其他语言的设置放到html里来. HBuilder可使用ruby脚本来编辑代码块和增强操作命令. 1.编辑代码块 如果要新增一个代码块,复制如 ...

  5. QML Image得到的图片资源路径的详细信息

    最近又开始了Qt5.在学习QML当地的资源总是越来越留念类似 " QML Image: Cannot open: qrc:///images/Blue hills.jpg "的错误 ...

  6. Mvc 下载文件

    你如何将文件传送给用户取决于你最开始如何存储它,如果你将文件存入数据库,你会用流的方式将文件返还给用户,如果你将文件存在硬盘中,你只需要提供一个超链接即可,或者也可以以流的方式.每当你需要以流的方式将 ...

  7. Visual Studio 2014

    开发 ASP.NET vNext 初步总结(使用Visual Studio 2014 CTP1) 2014-06-06 18:04 by 梁逸晨, 2149 阅读, 29 评论, 收藏, 编辑 新特性 ...

  8. Java中的嵌套类和内部类

    以前看<Java编程思想>的时候,看到过嵌套类跟内部类的区别,不过后来就把它们的概念给忘了吧.昨天在看<数据结构与算法分析(Java语言版)>的时候,又遇到了这个概念,当时就很 ...

  9. Java 8新特性前瞻

    快端午小长假了,要上线的项目差不多完结了,终于有时间可以坐下来写篇博客了. 这是篇对我看到的java 8新特性的一些总结,也是自己学习过程的总结. 几乎可以说java 8是目前为止,自2004年jav ...

  10. Bootstrap导航悬浮顶部,stickUp

    stickUp 一个 jQuery 插件 这是一个简单的jQuery插件,它能让页面目标元素 “固定” 在浏览器窗口的顶部,即便页面在滚动,目标元素仍然能出现在设定的位置.此插件可以在多页面的网站上工 ...