分享ADONET访问数据库详解和大家一起提高.docx

上传人:b****8 文档编号:13122883 上传时间:2023-06-11 格式:DOCX 页数:7 大小:19.83KB
下载 相关 举报
分享ADONET访问数据库详解和大家一起提高.docx_第1页
第1页 / 共7页
分享ADONET访问数据库详解和大家一起提高.docx_第2页
第2页 / 共7页
分享ADONET访问数据库详解和大家一起提高.docx_第3页
第3页 / 共7页
分享ADONET访问数据库详解和大家一起提高.docx_第4页
第4页 / 共7页
分享ADONET访问数据库详解和大家一起提高.docx_第5页
第5页 / 共7页
分享ADONET访问数据库详解和大家一起提高.docx_第6页
第6页 / 共7页
分享ADONET访问数据库详解和大家一起提高.docx_第7页
第7页 / 共7页
亲,该文档总共7页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

分享ADONET访问数据库详解和大家一起提高.docx

《分享ADONET访问数据库详解和大家一起提高.docx》由会员分享,可在线阅读,更多相关《分享ADONET访问数据库详解和大家一起提高.docx(7页珍藏版)》请在冰点文库上搜索。

分享ADONET访问数据库详解和大家一起提高.docx

分享ADONET访问数据库详解和大家一起提高

[分享]ADO.NET访问数据库详解(和大家一起提高)

我发现有很多人对ADO.NET认识很模糊,特整理一下文章,希望和大家一起进步!

ADO.NET概述ADO.NET提供对MicrosoftSQLServer等数据源以及通过OLEDB和XML公开的数据源的一致访问。

数据共享使用者应用程序可以使用ADO.NET来连接到这些数据源,并检索、操作和更新数据。

ADO.NET有效地从数据操作中将数据访问分解为多个可以单独使用或一前一后使用的不连续组件。

ADO.NET包含用于连接到数据库、执行命令和检索结果的.NET数据提供程序。

您可以直接处理检索到的结果,或将其放入ADO.NETDataSet对象,以便与来自多个源的数据或在层之间进行远程处理的数据组合在一起,以特殊方式向用户公开。

ADO.NETDataSet对象也可以独立于.NET数据提供程序使用,以管理应用程序本地的数据或源自XML的数据。

ADO.NET结构以前,数据处理主要依赖于基于连接的双层模型。

当数据处理越来越多地使用多层结构时,程序员正在向断开方式转换,以便为他们的应用程序提供更佳的可缩放性。

ADO.NET借用XML的力量来提供对数据的断开式访问。

ADO.NET的设计与.NET框架中XML类的设计是并进的——它们都是同一个结构的组件。

ADO.NET和.NET框架中的XML类集中于DataSet对象。

无论DataSet是文件还是XML流,它都可以使用来自XML源的数据来进行填充。

无论DataSet中数据的数据源是什么,DataSet都可以写为符合WWW联合会(W3C)的XML,并且将其架构包含为XML架构定义语言(XSD)架构。

由于DataSet固有的序列化格式为XML,它是在层间移动数据的优良媒介,这使DataSet成为以远程方式向XMLWebservices发送数据和架构上下文以及从XMLWebservices接收数据和架构上下文的最佳选择。

设计ADO.NET组件的目的是为了从数据操作中分解出数据访问。

完成此任务的是ADO.NET的两个核心组件:

DataSet和.NET数据提供程序,后者是一组包括Connection、Command、DataReader和DataAdapter对象在内的组件。

ADO.NETDataSet是ADO.NET的断开式结构的核心组件。

DataSet的设计目的很明确:

为了实现独立于任何数据源的数据访问。

因此,它可以用于多种不同的数据源,用于XML数据,或用于管理应用程序本地的数据。

DataSet包含一个或多个DataTable对象的集合,这些对象由数据行和数据列以及主键、外键、约束和有关DataTable对象中数据的关系信息组成。

ADO.NET结构的另一个核心元素是.NET数据提供程序,其组件的设计目的相当明确:

为了实现数据操作和对数据的快速、只进、只读访问。

Connection对象提供与数据源的连接。

Command对象使您能够访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令。

DataReader从数据源中提供高性能的数据流。

最后,DataAdapter提供连接DataSet对象和数据源的桥梁。

DataAdapter使用Command对象在数据源中执行SQL命令,以便将数据加载到DataSet中,并使对DataSet中数据的更改与数据源保持一致。

可以为任何数据源编写.NET数据提供程序。

.NET框架附带了两个.NET数据提供程序:

SQLServer.NET数据提供程序和OLEDB.NET数据提供程序。

下图阐释了ADO.NET结构的组件。

ADO.NETDataSetDataSet对象是支持ADO.NET的断开式、分布式数据方案的核心对象。

DataSet是数据的内存驻留表示形式,无论数据源是什么,它都会提供一致的关系编程模型。

它可以用于多个不同的数据源,用于XML数据,或用于管理应用程序本地的数据。

DataSet表示包括相关表、约束和表间关系在内的整个数据集。

下图将显示DataSet对象模型。

?

DataSet中的方法和对象与关系数据库模型中的方法和对象一致。

DataSet也可以按XML的形式来保持和重新加载其内容,并按XML架构定义语言(XSD)架构的形式来保持和重新加载其架构。

使用ADO.NET提供的通用接口,您可以编写一组在使用任何.NET数据提供程序时都将运行的代码。

当编写将用于多个.NET数据提供程序的代码时,请特别注意所使用的任何提供程序特定的语法。

例如,根据您所访问的数据源,SQL语法将有所不同。

当更改为一个不同的.NET数据提供程序时,如果将SQL命令隔离为字符串常数,则将使代码更易于维护。

另外,务必要保持在代码中创建参数的顺序。

对于SQLServer.NET数据提供程序,参数使用名称来标识,因此参数顺序并不重要。

但是,OLEDB.NET数据提供程序会按照参数添加到参数集合中的顺序来分配参数值。

因此,最好始终保持参数在代码中的顺序。

下面是C#的示例代码:

[C#]

//Youcanuseeither:

//IDbConnectionmyConn=newSqlConnection();

//or:

//IDbConnectionmyConn=newOleDbConnection();

IDbCommandmyCommand=myConn.CreateCommand();

myCommand.CommandText="SELECT*FROMCustomers";

IDataReadermyReader=myCommand.ExecuteReader();

while(myReader.Read())

Console.WriteLine("{0}\t{1}",myReader.GetString(0),myReader.GetString

(1));

创建和使用DataSetADO.NETDataSet是数据的一种内存驻留表示形式,无论它包含的数据来自什么数据源,它都会提供一致的关系编程模型。

一个DataSet表示整个数据集,其中包含对数据进行包含、排序和约束的表以及表间的关系。

使用DataSet的方法有若干种,这些方法可以单独应用,也可以结合应用。

您可以:

在DataSet中以编程方式创建DataTables、DataRelations和Constraints并使用数据填充这些表。

通过DataAdapter用现有关系数据源中的数据表填充DataSet。

创建DataSet可以通过调用DataSet构造函数来创建DataSet的实例。

请指定一个可选名称参数。

如果没有为DataSet指定名称,则该名称会设置为“NewDataSet”。

也可以基于现有的DataSet来创建新的DataSet。

新的DataSet可以是:

现有DataSet的原样副本;DataSet的复本,它复制关系结构(即架构)但不包含现有DataSet中的任何数据;或DataSet的子集,它仅包含现有DataSet中已使用GetChanges方法修改的行。

以下代码示例演示如何构造DataSet的实例。

[C#]DataSetcustDS=newDataSet("CustomerOrders");向DataSet添加DataTableADO.NET使您能够创建DataTable对象并将其添加到现有DataSet中。

可以使用要添加到DataTable的Columns集合中的DataColumn对象的PrimaryKey和Unique属性来设置DataTable的约束信息。

以下示例构造一个DataSet,将一个新的DataTable对象添加到该DataSet中,然后将三个DataColumn对象添加到该表中。

最后,该代码将一个列设置为主键列。

[C#]

DataSetcustDS=newDataSet("CustomerOrders");

DataTableordersTable=custDS.Tables.Add("Orders");

DataColumnpkCol=ordersTable.Columns.Add("OrderID",typeof(Int32));

ordersTable.Columns.Add("OrderQuantity",typeof(Int32));

ordersTable.Columns.Add("CompanyName",typeof(string));

ordersTable.PrimaryKey=newDataColumn[]{pkCol};

创建和使用数据表DataSet由表、关系和约束的集合组成。

在ADO.NET中,DataTable对象用于表示DataSet中的表。

DataTable表示一个内存内关系数据的表;数据对于它驻留于其中的基于.NET的应用程序来说是本地数据,但可从数据源(例如,使用DataAdapter的Microsoft?

SQLServer)中导入。

DataTable类是“.NET框架类库”中System.Data命名空间的成员。

您可以独立创建和使用DataTable,或者可以将其用作DataSet的成员,而且DataTable对象也可以与其他.NET框架对象(包括DataView)一起使用。

您可以通过DataSet对象的Tables属性来访问DataSet中表的集合。

表的架构或结构由列和约束表示。

使用DataColumn对象以及ForeignKeyConstraint和UniqueConstraint对象定义DataTable的架构。

表中的列可以映射到数据源中的列、包含从表达式计算所得的值、自动递增它们的值,或包含主键值。

除架构以外,DataTable还必须具有行,在其中包含数据并对数据排序。

DataRow类表示表中包含的实际数据。

DataRow及其属性和方法用于检索、计算和操作表中的数据。

在访问和更改行中的数据时,DataRow对象会维护其当前状态和原始状态。

您可以使用表中的一个或多个相关的列来创建表与表之间的父子关系。

DataTable对象之间的关系可使用DataRelation来创建。

然后,DataRelation对象可用于返回某特定行的相关子行或父行。

创建数据表DataTable表示一个内存内关系数据的表,可以独立创建和使用,也可以由其他.NET框架对象使用,最常见的情况是作为DataSet的成员使用。

DataTable对象可通过使用DataTable构造函数来创建,或者可通过将构造函数参数传递到DataSet的Tables属性的Add方法(它是一个DataTableCollection)来创建。

DataTable对象可通过使用DataAdapter对象的Fill方法或FillSchema方法在DataSet内创建,或者可使用DataSet的ReadXml、ReadXmlSchema或InferXmlSchema方法从预定义的或推断的XML架构中创建。

请注意,将DataTable添加为一个DataSet的Tables集合的成员后,不能再将其添至任何其他DataSet的表的集合。

最初创建DataTable时,它是没有架构(结构)的。

要定义表的架构,必须创建DataColumn对象并将其添至表的Columns集合。

您也可以为表定义主键列,而且可以创建Constraint对象并将其添至表的Constraints集合。

在为DataTable定义了架构之后,可通过将DataRow对象添至表的Rows集合来将数据行添加到表。

创建DataTable时,不需要为TableName属性提供值,您可以在其他时间指定属性,或者将其保留为空。

但是,在将没有TableName值的表添至DataSet时,该表就会得到一个递增的默认名称TableN,此名称以“Table”开头,从Table0开始。

注意建议您在提供TableName值时避免使用“Table”或“TableN”的命名规则,因为您提供的名称可能会与DataSet中现有的默认表名称冲突。

如果提供的名称已经存在,将引发异常。

以下示例创建DataTable对象的实例,并为其指定名称“Customers”。

[C#]

DataTableworkTable=newDataTable("Customers");

以下示例创建DataTable实例,方法是:

将其添至DataSet的Tables集合。

[C#]

DataSetcustDS=newDataSet();

DataTablecustTable=custDS.Tables.Add("CustTable");

创建和使用DataViewDataView使您能够创建DataTable中所存储的数据的不同视图,这种功能通常用于数据绑定应用程序。

使用DataView,您可以公开表中具有不同排序顺序的数据,并且可以按行状态或基于筛选器表达式来筛选数据。

DataView提供数据的动态视图,其内容、排序和成员关系会实时反映对基础DataTable的更改。

它不同于DataTable的Select方法,后者从表中按特定的筛选器和/或排序顺序返回DataRow数组,虽然其内容反映对基础表的更改,但其成员关系和排序却则保持静态。

DataView的动态功能使其成为数据绑定应用程序的理想选择。

与数据库提供的视图类似,DataView为您提供了可向其应用不同排序和筛选条件的单个数据集的动态视图。

但是,DataView和数据库视图之间相当不同的一点在于DataView不能作为表来进行处理,并且不能提供联接表的视图。

另外,还不能排除存在于源表中的列,也不能追加不存在于源表中的列(如计算列)。

可以使用DataViewManager来管理DataSet中所有表的视图设置。

DataViewManager为您提供了一种方便的方法来管理每个表的默认视图设置。

在将一个控件绑定到DataSet的多个表时,绑定到DataViewManager是理想的选择。

创建DataView创建DataView的方法有两种。

可以使用DataView构造函数,也可以创建对DataTable的DefaultView属性的引用。

DataView构造函数可以为空,也可以通过单个参数的形式采用DataTable或者同时采用DataTable与筛选条件、排序条件和行状态筛选器。

有关可与DataView一起使用的附加参数的更多信息。

由于在创建DataView时以及在修改任何Sort、RowFilter或RowStateFilter属性时都会生成DataView的索引,所以当创建DataView时,通过以构造函数参数的形式提供任何初始排序顺序或筛选条件,将实现最佳性能。

如果在不指定排序或筛选条件的情况下创建DataView,然后设置Sort、RowFilter或RowStateFilter属性,则会使索引生成至少二次:

一次是在创建DataView时,另一次是在修改任何排序或筛选属性时。

请注意,如果使用不采用任何参数的构造函数来创建DataView,那么在设置Table属性之前,将无法使用DataView。

以下代码示例演示如何使用DataView构造函数来创建DataView。

RowFilter、Sort列和DataViewRowState将与DataTable一起提供。

[C#]DataViewcustDV=newDataView(custDS.Tables["Customers"],"Country='USA'","ContactName",DataViewRowState.CurrentRows);以下代码演示如何使用该表的DefaultView属性获取对DataTable的默认DataView的引用。

[C#]DataViewcustDV=custDS.Tables["Customers"].DefaultView;总结上面是VS.NET中ADO.NET的一些主要的特性,给大家参考一下

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 育儿理论经验

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2