您好,欢迎访问三七文档
数据库访问技术ADO.NETADO.NET的起源1998年起,因为Web应用程序的窜起,大大改变了许多应用程序的设计方式,传统的数据库连线保存设计法无法适用于此类应用程序,这让ADO应用程序遇到了很大的瓶颈,也让微软开始思考让资料集(Resultset,在ADO中称为Recordset)能够离线化的能力,以及能在用户端创建一个小型数据库的概念,这个概念就是ado.net中离线型资料模型(disconnecteddatamodel)的基础,而在ADO的使用情形来看,数据库连线以及资源耗用的情形较严重(像是Server-sidecursor或是Recordset.Open会保持连线状态),在ado.net中也改良了这些组件,构成了能够减少数据库连线和资源使用量的功能。XML的使用也是这个版本的重要发展之一。2000年,微软的Microsoft.NET计划开始成形,许多的微软产品都冠上.NET的标签,ADO+也不例外,改名为ado.net并包装到.NETFramework类别库中,成为.NET平台中唯一的资料存取组件。ADO.NET简介ADO.NET是一组向.NETFramework程序员公开数据访问服务的类。ADO.NET为创建分布式数据共享应用程序提供了一组丰富的组件。它提供了对关系数据、XML和应用程序数据的访问,因此是.NETFramework中不可缺少的一部分。ADO.NET支持多种开发需求,包括创建由应用程序、工具、语言或Internet浏览器使用的前端数据库客户端和中间层业务对象。ADO.NET是与数据库访问操作有关的对象模型的集合,它基于Microsoft的.NETFramework,在很大程度上封装了数据库访问和数据操作的动作。ADO.NET同其前身ADO系列访问数据库的组件相比,做了以下两点重要改进:ADO.NET引入了离线的数据结果集(DisconnectedDataSet)这个概念,通过使用离线的数据结果集,程序员更可以在数据库断开的情况下访问数据库。ADO.NET还提供了对XML格式文档的支持,所以通过ADO.NET组件可以方便地在异构环境的项目间读取和交换数据。ADO.NET简介ADO.NET提供对诸如SQLServer和XML这样的数据源以及通过OLEDB和ODBC公开的数据源的一致访问。共享数据的使用方应用程序可以使用ADO.NET连接到这些数据源,并可以检索、处理和更新其中包含的数据。ADO.NET通过数据处理将数据访问分解为多个可以单独使用或一前一后使用的不连续组件。ADO.NET包含用于连接到数据库、执行命令和检索结果的.NETFramework数据提供程序。这些结果或者被直接处理,放在ADO.NETDataSet对象中以便以特别的方式向用户公开,并与来自多个源的数据组合;或者在层之间传递。DataSet对象也可以独立于.NETFramework数据提供程序,用于管理应用程序本地的数据或源自XML的数据。ADO.NET的结构及组件ADO.NET用于访问和操作数据的两个主要组件是.NETFramework数据提供程序和DataSet。NETFramework数据提供程序.NETFramework数据提供程序是专门为数据操作以及快速、只进、只读访问数据而设计的组件。主要包括Connection、Command、DataReader、DataAdapter四个对象ADO.NET的结构及组件ADO.NETDataSet是专门为独立于任何数据源的数据访问而设计的。因此,它可以用于多种不同的数据源,用于XML数据,或用于管理应用程序本地的数据。DataSet包含一个或多个DataTable对象的集合,这些对象由数据行和数据列以及有关DataTable对象中数据的主键、外键、约束和关系信息组成。ADO.NET的结构及组件ADO.NET数据提供程序SQLServer.NETFramework数据提供程序(System.Data.SqlClient)OLEDB.NETFramework数据提供程序(System.Data.OleDb)ODBC.NETFramework数据提供程序(System.Data.Odbc)Oracle.NETFramework数据提供程序(System.Data.OracleClient)Connection对象Connection对象提供与数据源的连接。要存取数据源内的数据,首先要建立程序和数据源之间的连接。属性(1)ConnectionString:获取或设置用于打开数据库的字符串,包括字符串的内容和数据提供器名称。(2)State:获取连接的当前状态方法(1)Open()方法:用于打开由ConnectionString属性指定的数据源连接(2)Close()方法:关闭数据源连接Connection对象ImportsSystemImportsSystem.DataImportsSystem.Data.SqlClient…Dimsqlconn=newsqlconnnectionSqlconn.connectionStringAsString=_DataSource=(local);InitialCatalog=Northwind;_&IntegratedSecurity=trueSqlconn.open()Command对象使用Command对象可以访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令。1.用构造函数创建SqlCommand对象,并通过该对象的构造函数参数来设置特定属性值,其语法格式如下:SqlCommand命令对象名=newSqlCommand(查询字符串,连接对象名);SqlCommandcom=newSqlCommand(string,conn);Command对象使用Command对象可以访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令。Command对象的属性UsingconnectionAsNewSqlConnection(connectionString)DimcommandAsSqlCommand=NewSqlCommand()command.Connection=connectioncommand.CommandText=SalesByCategorycommand.CommandType=CommandType.StoredProcedureCommand对象的方法ExecuteNonQuery:执行不返回任何行的命令。典型的例子是实现插入、更新和删除。ExecuteReader:通过Connection对象下达命令至数据源,将数据作为一个DataReader对象返回。用于任何返回数据的SQL查询;ExecuteScalar:从数据库中返回单独值,例如与特定查询相匹配的记录数,或者数据库功能调用的结果。ExecuteReader代码UsingconnectionAsNewSqlConnection(connectionString)DimcommandAsNewSqlCommand(queryString,connection)connection.Open()DimreaderAsSqlDataReader=command.ExecuteReader()DataReader对象当Command对象返回结果集时,需要使用DataReader对象来检索数据。DataReader对象返回一个来自Command的只读的、只能向前的数据流。DataReader每次只能在内存中保留一行,所以开销非常小。在与数据库的交互中,要获得数据访问的结果可用两种方法来实现,第一种是通过DataReader对象从数据源中获取数据并进行处理;第二种是通过DataSet对象将数据放置在内存中进行处理。UsingconnectionDimcommandAsSqlCommand=NewSqlCommand(_SELECTCategoryID,CategoryNameFROMCategories;,_connection)connection.Open()DimreaderAsSqlDataReader=command.ExecuteReader()Ifreader.HasRowsThenDoWhilereader.Read()Console.WriteLine(reader.GetInt32(0)_&vbTab&reader.GetString(1))LoopElseConsole.WriteLine(Norowsfound.)EndIfreader.Close()EndUsingDataAdapter对象DataAdapter对象是一个双向通道,用来把数据从数据源中读到一个内存表中,以及把内存中的数据写回到一个数据源中。这两种操作分别称作填充(Fill)和更新(Update)。DataAdapter对象通过Fill方法和Update方法来提供这一桥接器。DimadapterAsSqlDataAdapter=NewSqlDataAdapter(_SELECTCategoryID,CategoryNameFROMdbo.Categories,_connection)adapter.UpdateCommand=NewSqlCommand(_UPDATECategoriesSETCategoryName=@CategoryName&_WHERECategoryID=@CategoryID,connection)adapter.UpdateCommand.Parameters.Add(_@CategoryName,SqlDbType.NVarChar,15,CategoryName)DimparameterAsSqlParameter=_adapter.UpdateCommand.Parameters.Add(_@CategoryID,SqlDbType.Int)parameter.SourceColumn=CategoryIDparameter.SourceVersion=DataRowVersion.OriginalDimcategoryTableAsNewDataTableadapter.Fill(categoryTable)DimcategoryRowAsDataRow=categoryTable.Rows(0)categoryRow(CategoryName)=NewBeveragesadapter.Update(categoryTable)DataAdapter执行对数据库的操作1.创建数据库连接对象Connection;2.创建Select查询语句或Command对象;3.创建DataAdapter对象;4.创建DataSet对象;5.为DataAdapter对象自动生成更新命令;6.调用DataAdapter对象的Fill()方法填充DataSet对象;7.对DataTable中的特定记录进行增加、删除、修改8.调用DataAdapter对象的Update()方法,将DataTable中的数据变化提交到数据库。说明:当调用Update方法时,DataAdapter将分析已做出的更改并执行相应的命令(Insert,Update,Delete)。DataSetDataSet相当于内存中的数据库,在命名空间System.Data中定义;DataAdapter相当于DataSet和物理数据源之间的桥梁。在DataSet内部是一个或多个DataTable的集合,DataSet.Tables[“表名”]可获取数据集中的一个表。在DataTable中执行的插入、更新和删除操作并不会自动写回数据库。如果想把更改写回数据库,则需要手动去完成,这个操作由DataAdapter.Update完成。DataSet与DataAdapterDataSet是
本文标题:最新高级数据库技术
链接地址:https://www.777doc.com/doc-2318957 .html