【ASP.NET】ADO.NET

	在我们编程的这么长时间以来,几乎每个程序都需要我们与数据库打交道,对数据的访问和处理都是少不了的操作。在ASP.NET中,它给我们提供了ADO.NET技术,ADO.NET提供了对关系数据、XML和应用程序数据的访问,支持多种开发需求。
	其实,在我们学习数据库的时候,就与ADO.NET接触过,但之前也没有总结,这一次的学习,比以前理解起来要容易些,所以也总结一下。
	ADO.NET组件将数据访问与数据处理分离,它是通过两个主要的组件:.NET数据提供程序(data provider)和DataSet来完成这一操作的。下面是ADO.NET的整体结构图:
	
	ADO.NET数据访问一般有两种方式:一是通过DataReader对象直接访问;另一种是通过DataSet对象和DataAdapter对象来访问。它包含一下四种对象:
  • Connection,提供与数据源的连接;
  • Command,用于返回、修改数据,运行存储过程以及发送或检索参数信息的数据库命令;
  • DataReader,从数据源中提供高性能的数据流;
  • DataAdapter,提供连接DataSet对象和数据的桥梁,使用Command对象在数据源中执行SQL命令,以便将数据加载到DataSet对象中,并使DataSet对象中数据的更改与数据源保持一致。
下面就对这四个对象一一总结一下: (一)Connection对象 对于数据库的操作,首先需要连接数据库,在ADO.NET中,利用Connection对象连接数据库,其常用的一些参数主要有:
  • Data Source:SQL Server数据库服务器的名称;
  • Initial Catalog:数据库名称;
  • Integrated Security:决定连接是否安全;
  • User ID:SQL Server登录账户;
  • Password:SQL Server账户的登录密码。
(二)Command对象 数据库连接成功后,就可以读取和操作数据库中的数据,主要通过使用Command对象执行SQL命令实现。 SQLCommand类,我是在机房重构的时候,有了进一步深刻的认识,不论是执行SQL语句,还是存储过程,这都是通过command对象的属性和方法改变的。下面就简单列举一些我们在机房重构中用到过的各种属性和方法,有的在当时用的时候也许还不理解它的含义。 sqlCommand类的属性:
  • commandtext:类型为string,其值可以是SQL语句,存储过程或表;
  • commandType:类型为枚举类型,Text为SQL语句,StoredProcedure为存储过程,TableDirect为要读取的表;
  • connection:获取sqlconnection对象,使用该对象与数据库进行通信。
sqlCommand类的重要方法:
  • ExecuteNonQuery:类型为int,执行无返回结果的SQL语句;
  • ExecuteReader:类型为SqlDataReader,执行Select、tableDirect命令或有返回结果的存储过程;
  • CreateParameter:创建SQLParameter对象。
sqlCommand类的构造函数:
  • sqlCommand():不带参数,直接创建对象;
  • sqlCommand(string CommandText):根据SQL语句创建对象;
  • SqlCommand(string CommandText,SqlConnection conn):根据SQL语句和数据源连接创建对象;
  • SqlCommand(string CommandText,SqlConnection conn,sqlTransaction tran):根据SQL语句、数据源连接和事务对象创建对象;
(三)DataReader对象 如果利用Command对象所执行的命令是有返回数据的Select命令,此时Command对象会自动产生一个DataReader对象,它可以将数据源的数据取出后显示给使用者,它一次只能读取一条数据,而且只能只读。 (四)DataAdapter对象 DataAdapter对象能够用来保存和检索数据,其Fill方法用于将查询结果填充到DataSet或DataTable中。 除了上面的四个对象,DataSet我们也算比较熟悉了,在机房重构的时候,我们也有用到过,我们将数据库与数据控件绑定,便可得到一个DataSet,这样对于我们访问和处理数据也方便了许多。 DataSet可以看成是一个数据容器,它是各种数据源中的数据在计算机内存中映射成的缓存。具有以下特性:
  • 独立性,其独立于各种数据源;
  • 离线和连接,其既可以以离线方式也可以以实时连接方式操纵数据库中的数据;
  • 其是一种数据关系视图。
学习的过程中就是需要我们不断反复,有的时候是先学习理论,再后面慢慢都会用到,用过了之后,觉得自己又理解得深刻了些;有的时候是自己已经用到了,但对于其理论上的含义不清楚,等到后来碰到了相关的理论知识的学习,突然有种恍然大悟的感觉。不管哪一种,理论与实践相结合,是必不可少的。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-07 23:25:47

【ASP.NET】ADO.NET的相关文章

【ASP.NET】编程点滴 :ASP.NET身份验证

ASP.NET实际开发中身份验证 是一个不可回避的问题.在相当一段长的时间内,由于不求甚解,我对这个话题似懂非懂.今天就对它做个简单的小结. Authentication and Authorization(身份验证和授权) 在开始ASP.NET身份验证之前,我们必须了解两个概念:Authentication and Authorization Authentication是识别该用户的身份,换句话说,它检查特定用户是不是特定网站的用户,它回答了“Who are you”的问题. Authori

【转】【Asp.Net】asp.net(c#) 网页跳转

在asp.net下,经常需要页面的跳转,下面是具体的几种方法.跳转页面是大部编辑语言中都会有的,正面我们来分别介绍一下关于.net中response.redirect sever.execute server.transfer 三种页面跳转的方法: ①response.redirect 这个跳转页面的方法跳转的速度不快,因为它要走2个来回(2次postback),但他可以跳 转到任何页面,没有站点页面限制(即可以由雅虎跳到新浪),同时不能跳过登录保护.但速度慢是其最大缺陷!redirect跳转机

【ASP.NET】多线程操作全局变量时候的处理。

对于ASP.NET本身来讲,是基于IIS应用程序池,有些时候会碰到多用户需要操作同一个全局变量的问题,那么就会有多线程并发访问的问题.在这里仅介绍使用lock来对用户的操作进行加锁保证变量在同一时刻仅仅有一个线程进行访问,从而保证数据一致性. 示例代码如下: public class BUAPrivilegeService { IAuthorizationService authService = ServiceFactory.Instance().GetAuthorizationService

【ASP.NET】同一URL根据不同设备跳到不同页面

我们都知道,现在的新大型网站,如果输入www开头的网址,网站会自动判别设备,并跳转到合适的页面,来自于PC和移动端最终访问的真实url会不同.解决方案如下: 在网站的默认页面Defau.aspx的Default.aspx.cs文件的Page_Load方法中加入如下代码: string u = Request.ServerVariables["HTTP_USER_AGENT"]; Regex b = new Regex(@"android.+mobile|avantgo|bad

【ASP.NET】 中 system.math 函数使用

1 /* 字段 */ 2 Math.E; //2.71828182845905 3 Math.PI; //3.14159265358979 4 5 /* 静态方法 */ 6 Math.Abs; //绝对值 7 Math.Acos; //反余弦 8 Math.Asin; //反正弦 9 Math.Atan; //反正切 10 Math.Atan2; //反正切, 两参数 11 Math.BigMul; //int32 * int32 = int64 12 Math.Ceiling; //取 >=

【ASP.NET】如何使用类创建公共函数,在不同ASP.NET页面间重复调用

为了减少代码冗余,应将公共函数写在类中,供不同ASP.NET页面调用. 1,先新建一个类,并在类中添加函数逻辑 namespace public_function_demo { public class MyFunction { public static string tbName(string tbNo) { if (tbNo == "510101") { return "3GPP 51.010-1"; } else { return "3GPP 51

【Asp.Net-- 杂七杂八】的代码

Request.Url.PathAndQuery public RedirectResult AddToCart(Cart cart, int productId, string returnUrl) { Product product = this.productRepository.Products .FirstOrDefault(p => p.ProductID == productId); if (null != productId) { cart.AddItem(product, 1)

【ASP.NET】编程备忘:页面传值之returnValue

在ASP.NET页面间传值的方式有很多,大致归为URL传值.内置对象传值这两类.当然宽泛地讲大致有这么些: Form表单传值:GET.POST(QueryString.PostBackUrl) 内置对象:Cookie.Session.Application.Cache.Response.Redirect.Server.Transfer Context 隐藏域 静态变量 文件:web.config.Machine.config...... 注:严格地说文件并不能说成是页面间传值的一种方式.它和数据

【ASP.NET】Aspnetpager对GridView分页,并导出Excel

一.前言 谈到分页,在网页上简直到处都是.网络的资源越来越多,如果不用分页技术来显示,就会拖拉很长很长.下面给大家分享分页技术. 二.基本要点 当要显示数据量足够大的时候,我们往往采用分页显示的处理办法.分页有真分页和假分页. 假分页:从数据库中取出所有的数据,然后分页在界面上显示.访问一次数据库,但由于选择的数据量比较大,所以第一次花费时间比较长,但之后每一页的显示都是直接.快速的,避免对数据库的多次访问. 真分页:确定要显示的数量和内容,然后每次都去数据库取出该少量数据,优点是数据量小,缺点