ADO.NET—两种连接模式
一、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—两种连接模式的更多相关文章
- sftp及两种连接模式简介
sftp是ssh内含的协议,只要sshd服务器启动了,它就可用,它本身不需要ftp服务器启动. FTP服务器和客户端要进行文件传输,就需要通过端口来进行.FTP协议需要的端口一般包括两种: 控制链路- ...
- FTP 两种连接模式
简介 FTP协议要用到两个TCP连接, 一个是命令连接,用来在FTP客户端与服务器之间传递命令:另一个是数据连接,用来上传或下载数据.通常21端口是命令端口,20端口是数据端口.当混入主动/被动模式的 ...
- 一步一步学FRDM-KE02Z(一):IAR调试平台搭建以及OpenSDA两种工作模式设置
摘要:FRDM-KE02Z是飞思卡尔公司较为新的微控制器,学习和开发资料较少.从本篇开始会陆续介绍其相关的开发流程,并完成一个小型的工程项目.这是本系列博客的第一篇,主要介绍开发环境IAR for A ...
- 【转帖】两种IO模式:Proactor与Reactor模式
两种IO模式:Proactor与Reactor模式 https://www.cnblogs.com/pigerhan/p/3474217.html. 挺好的说明了epoll和IOCP的区别 在高性能的 ...
- java web学习总结(二十九) -------------------JavaBean的两种开发模式
SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...
- ASP.Net的两种开发模式
一.ASP.Net的两种开发模式 1.1 ASP.Net WebForm的开发模式 (1)处理流程 在传统的WebForm模式下,我们请求一个例如http://www.aspnetmvc.com/bl ...
- Spark on YARN两种运行模式介绍
本文出自:Spark on YARN两种运行模式介绍http://www.aboutyun.com/thread-12294-1-1.html(出处: about云开发) 问题导读 1.Spark ...
- javaweb学习总结(二十一)——JavaWeb的两种开发模式
SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...
- spark on mesos 两种运行模式
spark on mesos 有粗粒度(coarse-grained)和细粒度(fine-grained)两种运行模式,细粒度模式在spark2.0后开始弃用. 细粒度模式 优点 spark默认运行的 ...
随机推荐
- 正则提取文本中的颜色值 #xxxx,不严谨版本
不严谨但兼容性最好: #[a-fA-F0-9]+ 增加严谨性: #[a-fA-F0-9]{1,6}
- CI框架 .htaccess 隐藏url在index.php解决方案
CodeIgniter(下面简称"CI")是一款国外优秀的PHP轻量级MVC框架,它支持PHP4和PHP5.是开发中小型可拓展性需求高的Web应用程序的利器.眼下你所见到的这个博客 ...
- C/C++中常量字符串管理
为了节省内存,C/C++把常量字符串放到单独的一个内存区域.当几个指针赋值给相同的常量字符串时,它们实际上会指向相同的内存地址.但用产量初始化字符数组,结果却不同. 下面是一个小程序示例: #incl ...
- C# 如何生成CHM帮助文件
原文:C# 如何生成CHM帮助文件 前一段时间应公司要求,让我开发一个数据库字段信息CHM帮助文件生成软件.结果当时我就二了,这个东西我只用过,不知道咋做啊.没想到老大很随意说一句:"没事, ...
- hdu 2795 段树--点更新
http://acm.hdu.edu.cn/showproblem.php?pid=2795 在第一和第三多学校都出现线段树,我在比赛中并没有这样做.,热身下,然后31号之前把那两道多校的线段树都搞了 ...
- 激活windows server 2012 R2的方法
首先登陆dreamspark 注册一个账号https://www.dreamspark.com/Account/SignIn.aspx, 点击创建账户,信息可以完全瞎编,邮箱不存在也可以.然后使用“我 ...
- leetco Path Sum II
和上一题类似,这里是要记录每条路径并返回结果. Given the below binary tree and sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 ...
- 02.零成本实现WEB性能测试-基于APACHE JMETER
书评: 1.这本是介绍性能测试工具Jmeter的书籍,维度还够,但是粒度太粗. 2.对于想快速了解JMeter的使用和工具的原件使用,还是有一定的参考价值. 3.实际上,这本书可用来快速入门,掌握和了 ...
- 读书笔记—CLR via C#字符串及文本
前言 这本书这几年零零散散读过两三遍了,作为经典书籍,应该重复读反复读,既然我现在开始写博了,我也准备把以前觉得经典的好书重读细读一遍,并且将笔记整理到博客中,好记性不如烂笔头,同时也在写的过程中也可 ...
- 记录OC学习的一点一滴(二)
NSString 基础练习: 代码: // // main.m // NSStringDemo01 // // Created by Levi on 14-3-14. // Copyright (c) ...