logo资料库

ADO.NET数据库访问技术详细资料.doc

第1页 / 共51页
第2页 / 共51页
第3页 / 共51页
第4页 / 共51页
第5页 / 共51页
第6页 / 共51页
第7页 / 共51页
第8页 / 共51页
资料共51页,剩余部分请下载后查看
1 ADO.NET概述
1.1 ADO.NET体系结构
1.2 ADO.NET对象模型
2.2 Connection 对象与数据库连接
2.2.1 Connection对象的常用属性
2.2.2 Connection对象的连接字符串
2.2.3 Connection对象的常用方法
2.3 Command(数据命令)对象与查询语句
2.3.1 Command对象的常用属性
2.3.2 Command对象的常用方法
2.3.3 Command对象创建SQl语句代码示例
综合示例
4.4.2 实例演示DataReader
2.4 DataReader对象与数据获取
2.4.1 DataReader对象的常用属性
2.4.2 DataReader对象的常用方法
2.4.3 DataReader对象访问数据库代码示例
2.5 DataAdapter对象
2.5.1 DataAdapter对象的常用属性
2.5.2 DataAdapter对象的常用方法
2.5.3 DataAdapter对象代码示例
2.6 DataSet对象
2.6.1 DataSet对象概述
2.6.2 DataSet对象模型
2.6.3 DataCoIumn和DataRow对象
2.6.4 使用DataSet对象访问数据库
2.7 ADO.NET 代码综合示例
2.7.1 使用OLE DB.NET Provider
2.7.2 使用SQL Server .NET Provider
2.7.3 数据库访问综述
2.8 DataGrid控件与数据库访问技术
2.8.1 DataGrid控件与数据绑定
2.8.2 DataGrid代码示例
2.9 本章小结
2.1 ADO.NET 概述 ............................................................................................................................2 2.1.1 ADO.NET 体系结构 .........................................................................................................2 2.1.2 ADO.NET 对象模型......................................................................................................3 2.2 Connection 对象与数据库连接 ..................................................................................................4 2.2.1 Connection 对象的常用属性 ........................................................................................ 4 2.2.2 Connection 对象的连接字符串 .................................................................................... 5 2.2.3 Connection 对象的常用方法 ........................................................................................ 7 2.3 Command(数据命令)对象与查询语句 .....................................................................................11 2.3.1 Command 对象的常用属性 ........................................................................................ 11 2.3.2 Command 对象的常用方法 ........................................................................................ 12 2.3.3 Command 对象创建 SQl 语句代码示例 ....................................................................16 综合示例 .................................................................................................................................. 17 4.4.2 实例演示 DataReader.................................................................................................. 32 2.4 DataReader 对象与数据获取.................................................................................................... 34 2.4.1 DataReader 对象的常用属性......................................................................................34 2.4.2 DataReader 对象的常用方法 .........................................................................................34 2.4.3 DataReader 对象访问数据库代码示例......................................................................36 2.5 DataAdaDter 对象 ...................................................................................................................37 2.5.1 DataAdapter 对象的常用属性.................................................................................... 37 2.5.2 DataAdapter 对象的常用方法.................................................................................... 38 2.5.3 DataAdapter 对象代码示例 ........................................................................................ 40 2.6 DataSet 对象 ...............................................................................................................................41 2.6.1 DataSet 对象概述 ........................................................................................................... 41 2.6.2 DataSet 对象模型 ........................................................................................................ 41 2.6.3 DataCOIumn 和 DataRow 对象 .................................................................................. 43 2.6.4 使用 DataSet 对象访问数据库................................................................................... 46 2.7 ADO.NET 代码综合示例 .........................................................................................................47 2.7.1 使用 OLE DB.NET Provider ....................................................................................47 2.7.2 使用 SQL Server .NET Provider................................................................................ 48 2.7.3 数据库访问综述 ..........................................................................................................48 2.8 DataGrid 控件与数据库访问技术 ............................................................................................49 2.8.1 DataGrid 控件与数据绑定 ..........................................................................................49 2.8.2 DataGrid 代码示例 ...................................................................................................... 49 2.9 本章小结 ................................................................................................................................. 51 C#与数据库访问技术 ADO.NET(ActiveX Data Object.NET)是 Microsoft 公司开发的用于数据库连接的一套组件 模型,是 ADO 的升级版本。
由于 ADO.NET 组件模型很好地融入了.NET Framework,所以拥有.NET Framework 的平 台无关、高效等特性。程序员能使用 ADO.NET 组件模型,方便高效地连接和访问数据库。 1 ADO.NET 概述 ADO.NET 是 与 数 据 库 访 问 操 作 有 关 的 对 象 模 型 的 集 合 , 它 基 于 Microsoft 的 .NET Framework,在很大程度上封装了数据库访问和数据操作的动作。 ADO.NET 同其前身 ADO 系列访问数据库的组件相比,做了以下两点重要改进: ADO.NET 引入了离线的数据结果集(Disconnected DataSet)这个概念,通过使用离线的 数据结果集,程序员更可以在数据库断开的情况下访问数据库。 ADO.NET 还提供了对 XML 格式文档的支持,所以通过 ADO.NET 组件可以方便地在 异构环境的项目间读取和交换数据。 1.1 ADO.NET 体系结构 ADO.NET 组件的表现形式是.NET 的类库,它拥有两个核心组件:.NET Data Provider(数 据提供者)和 DataSet(数据结果集)对象。 .NET Data Provider 是专门为数据处理以及快速地只进、只读访问数据而设计的组件,包 括 Connection、Command、DataReader 和 DataAdapter 四大类对象,其主要功能是: 在应用程序里连接数据源,连接 SQL Server 数据库服务器。 通过 SQL 语句的形式执行数据库操作,并能以多种形式把查询到的结果集填充到 DataSet 里。 DataSet 对象是支持 ADO.NET 的断开式、分布式数据方案的核心对象。DataSet 是数据的 内存驻留表示形式,无论数据源是什么,它都会提供一致的关系编程模型。它是专门为独立 于任何数据源的数据访问而设计的。 DataSet 对象的主要功能是: 用其中的 DataTable 和 DataRelations 对象来容纳.NET Data Provider 对象传递过来的数 据库访问结果集,以便应用程序访问。 (2)把应用代码里的业务执行结果更新到数据库中。 并且,DataSet 对象能在离线的情况下管理存储数据,这在海量数据访问控制的场合是非 常有利的。 图 2-1 描述了 ADO.NET 组件的体系结构。
图 2-1 ADO.NET 体系结构 1.2 ADO.NET 对象模型 ADO.NET 对 象 模 型 中 有 5 个 主 要 的 数 据 库 访 问 和 操 作 对 象 , 分 别 是 Connection 、 Command、DataReader、DataAdapter 和 DataSet 对象。 其中,Connection 对象主要负责连接数据库,Command 对象主要负责生成并执行 SQL 语 句,DataReader 对象主要负责读取数据库中的数据,DataAdapter 对象主要负责在 Command 对象执行完 SQL 语句后生成并填充 DataSet 和 DataTable,而 DataSet 对象主要负责存取和更 新数据。 ADO.NET 主要提供了两种数据提供者(Data Provider),分别是 SQL Server.NET Provider 和 OLE DB.NET Provider。 SQL Server.NET Framework 数据提供程序使用它自身的协议与 SQL Server 数据库服务器 通信,而 OLEDB.NET Framework 则通过 OLE DB 服务组件(提供连接池和事务服务)和数据源 的 OLE DB 提供程序与 OLE DB 数据源进行通信。 它们两者内部均有 Connection、Command、DataReader 和 DataAdapter 4 类对象。对于不 同的数据提供者,上述 4 种对象的类名是不同的,而它们连接访问数据库的过程却大同小异。 这是因为它们以接口的形式,封装了不同数据库的连接访问动作。正是由于这两种数据 提供者使用数据库访问驱动程序屏蔽了底层数据库的差异,所以从用户的角度来看,它们的 差别仅仅体现在命名上。 表 2-1 描述了这两类数据提供者下的对象命名。 表 2-1 ADO.NET 对象描述
对象名 Connection 对象 Command 对象 DataReader 对象 DataAdapter 对象 OLE DB 数据提供者的类名 SQL Server 数据提供者类名 OleDbConnection OleDbCommand OleDbDataReader OleDbDataAdapter SqlConnection SqlCommand SqlDataReader SqlDataAdapter 2.2 Connection 对象与数据库连接 在不同的 Provider 类型下,Connection 对象的命名也是不同的,但它们有一个共同的功能, 那就是管理与数据源的连接。 2.2.1 Connection 对象的常用属性 Connectionion 对象主要用于连接数据库,它的常用的属性如下。  ConnectionString 属性:该属性用来获取或设置用于打开 SQL Server 数据库的字符串。 ConnectionTimeout 属性:该属性用来获取在尝试建立连接时终止尝试, 并生成错误之前所等待的时间。 DataBase 属性:该属性用来获取当前数据库或连接打开后要使用的数据库 的名称。 DataSource 属性:该属性用来设置要连接的数据源实例名称, 例如 SQLServer 的 Local 服务实例。  State 性该属性:是一个枚举类型的值,用来表示同当前数据库的 连接状态。该属性的取值情况和含义如表 2-2 所示。 表 2-2 Provider 值描述(ConnectionSate 枚举成员值) 属 性 值 对应含义 Broken 该连接对象与数据源的连接处于中断状态。只有当连接打开后再与数据库失 去连接才会导致这种情况。可以关闭处于这种状态的连接,然后重新打开(该 值是为此产品的未来版本保留的) 该连接对象正在检索数据 该连接处于打开状态 该连接处于关闭状态 该连接对象正在执行数据库操作的命令 Closed Connecting 该连接对象正在与数据源连接(该值是为此产品的未来版本保留的) Executing Fetching Open State 属性一般是只读不写的,以下代码演示了使用 State 属性管理控制数据连接的方式。 //设置连接对象 SqlConnection conn; //如果是空闲状态,连接数据库 if(conn.State == ConnectionState.Closed) {
conn.Open(); } //访问数据库的代码 …… //最后关闭连接 if(conn.State == ConnectionState.Open) { conn.Close(); } 2.2.2 Connection 对象的连接字符串 在 ConnectionString 连接字符串里,一般需要指定将要连接数据源的种类、 数据库服务器的名称、数据库名称、登录用户名、密码、等待连接时间、 安全验证设置等参数信息,这些参数之间用分号隔开。下面将详细描述 这些常用参数的使用方法。 1. Provider 参数 Provider 参数用来指定要连接数据源的种类。如果使用的是 SQL Server Datahovider,则不需要指定 Provider 参数,因为 SQL Server DataProvider 已经 指定了所要连接的数据源是 SQl Server 服务器。如果使用的是 O1eDB Data Provider 或其他连接数据库,则必须指定 Provider 参数。表 2-3 说明了 Provider 参数值和连接 数据源类型之间的关系。 表 2-3 Provider 值描述 Provider 值 SQL OLE DB MSDASQL Microsoft. Jet. OLEDB.4.0 MSDAORA 对应连接的数据源 Microsoft OLEDB Provider for SQL Server Microsoft OLEDB Provider for ODBC Microsoft OLEDB Provider for Access Microsoft OLEDB Provider for Oracle 2.Server 参数 Server 参数用来指定需要连接的数据库服务器(或数据域)。比如 Server=(local),指定连接的数据库服务器是在本地。如果本地的数据库 还定义了实例名,Server 参数可以写成 Server=(local)\实例名。 另外,可以使用计算机名作为服务器的值。 如果连接的是远端的数据库服务器,Server 参数可以写成 Server=IP 或 “Server=远程计算机名”的形式。 Server 参数也可以写成 Data Source,比如 Data Source=IP。 server=(local);Initial Catalog=student;user Id=sa; password= ; Data Source=(localhost);Initial Catalog=student;user Id=sa; password= ;
3.DataBase 参数 DataBase 参数用来指定连接的数据库名。比如 DataBase=Master, 说明连接的数据库是 Master,DataBase 参数也可以写成 Initial Catalog,如 Initial Catalog=Master。 4.Uid 参数和 Pwd 参数 Uid 参数用来指定登录数据源的用户名,也可以写成 UserID。 比如 Uid(User ID)=sa,说明登录用户名是 sa。 Pwd 参数用来指定连接数据源的密码,也可以写成 Password。 比如 Pwd(Password)=asp.net,说明登录密码是 asp.net。 5.Connect Timeout 参数 Connect Timeout 参数用于指定打开数据库时的最大等待时间,单位是秒。 如果不设置此参数,默认是 15 秒。如果设置成-1,表示无限期等待,一般不推荐使用。 6.Integrated Security 参数 Integrated Security 参数用来说明登录到数据源时是否使用 SQL Server 的集成安全验证。如果该参数的取值是 True(或 SSPI,或 Yes), 表示登录到 SQL Server 时使用 Windows 验证模式,即不需要通过 Uid 和 Pwd 这样的方式 登录。如果取值是 False(或 No),表示登录 SQL Server 时使用 Uid 和 Pwd 方式登录。 一般来说,使用集成安全验证的登录方式比较安全,因为这种方式不会暴露用户名和密 码。 安装 SQL Server 时,如果选中“Windows 身份验证模式”单选按钮则应该使用如下的连 接字符串 Data Source=(local); Init Catalog=students; Integrated Security=SSPI; Integrated Security=SSPI 表示连接时使用的验证模式是 Windows 身份验证模式。 7.Pooling、MaxPool Size 和 Min Pool Size 参数 Pooling 参数用来说明在连接到数据源时,是否使用连接池,默认是 True。当该值为 True 时,系统将从适当的池中提取 SQLConnection 对象,或在需要时创建该对象并将其添加到适 当的池中。当取值为 False 时,不使用连接池。 当应用程序连接到数据源或创建连接对象时,系统不仅要开销一定的通信和内存资源, 还必须完成诸如建立物理通道(例如套接字或命名管道),与服务器进行初次握手,分析连接字 符串信息,由服务器对连接进行身份验证,运行检查以便在当前事务中登记等任务,因此往 往成为最为耗时的操作。 实际上,大多数应用程序仅使用一个或几个不同的连接配置。这意味着在执行应用程序 期间,许多相同的连接将反复地打开和关闭。为了使打开的连接成本最低,ADO.NET 使用称 为 Pooling(即连接池)的优化方法。 在连接池中,为了提高数据库的连接效率,根据实际情况,预先存放了若干数据库连接 对象,这些对象即使在用完后也不会被释放。应用程序不是向数据源申请连接对象,而是向
连接池申请数据库的连接对象。另外,连接池中的连接对象数量必须同实际需求相符,空置 和满载都对数据库的连接效率不利。 Max Pool Size 和 Min Pool Size 这两个参数分别表示连接池中最大和最小连接数量,默认 分别是 100 和 0。根据实际应用适当地取值将提高数据库的连接效率。 8.综合实例 下面通过实例来说明连接字符串的具体含义。 如果连接字符串是: "Provider= Microsoft.Jet.OleDB.4.0;Data Source=D:\login.mdb" 则说明数据源的种类是 Microsoft.Jet.OleDB.4.0,数据源是 D 盘下的 login.mdb Access 数据 库,用户名和密码均无。 如果连接字符串是: "Server= (local); DataBase=Master;Uid =sa;Pwd=;ConnectionTimeout=20" 由于没有指定 Provider,所以可以看出该连接字符串用于创建 SqlConnection 对象,连接 SQL Server 数据库。需连接的 SQL Server 数据库服务器是 local,数据库是 Master,用户名是 sa,密码为空,而最大连接等待时间是 20 秒。 2.2.3 Connection 对象的常用方法 Connection 类型的对象用来连接数据源。在不同的数据提供者的内部,Connection 对象的 名称是不同的,在 SQL Server Data Provider 里叫 SqlConnection,而在 OLE DB Data Provider 里叫 OleDbConnection。 下面将详细介绍 Connection 类型对象的常用方法。 1.构造函数 构造函数用来构造 Connection 类型的对象。对于 SqlConnection 类,其构造函数说明如表 2-4 所示。 表 2-4 SqlConnection 类构造函数说明 参数说明 不带参数 连接字符串 函数说明 创建 SqlConnection 对象 根据连接字符串,创建 SqlConnection 对象 函数定义 SqlConnection() SqlConnection(string connectionstring) 第 1 种: String ConnectionString =”server=(local); Initial Catalog =stu; SqlConnection conn=new SqlConnection(); conn.ConnectionString=ConnectionString; conn.Open(); ”; 第 2 种 String cnn=”server=(local); Initial Catalog =stu; SqlConnection conn=new SqlConnection(cnn); conn.Open(); ”; 显然使用第 2 种方法输入的代码要少一点,但是两种方法执行的效率并 没有什么不同,另外,如果需要重用 Connection 对象去使用不同的身份连
接不同的数据库时,使用第一种方法则非常有效。例如: SqlConnection conn=new SqlConnection(); conn.ConnectionString=connectionString1; conn.Open(); //访问数据库,做一些事情 conn.Close(); conn.ConnectionString=connectionString2; conn.Open(); //访问数据库,做另外一些事情 conn.Close(); 注意:只有当一个连接关闭以后才能把另一个不同的连接字符串赋值给 Connection 对象。如果不知道 Connection 对象在某个时候是打开是 关闭时,可以检查 Connection 对象的 State 属性,它的值可以是 Open, 也可以是 Closed,这样就可以知道连接是否是打开的。 表 2-5 说明了 OleDbConnection 类的构造函数。可以看出,它们和 SqlConnection 类的构 造函数非常相近。 表 2-5 OleDbConnection 类构造函数说明 函数定义 OleDbConnection() OleDbConnection(string connectionstring) 参数说明 函数说明 创建 OleDbConnection 对象 不带参数 连接字符串 根据连接字符串,创建 OleDbConnection 对象 2.Open 和 Close 方法 Open 和 Close 方法分别用来打开和关闭数据库连接,都不带参数, 均无返回值。 Open 方法:使用 ConnectionString 所指定的属性设置打开数据库连接 Close 方法:关闭与数据库的连接,这是关闭任何打开连接的首选方法 3.SqlCommand(OleDbCommand)CreateCommand()方法 SqlCommand(OleDbCommand)CreateCommand()方法用来创建一个 Command 类型的对象。 Command 类对象一般用来执行 SQL 语句,关于 Command 对象的操作将在 2.3 节里详细 描述。 CreateCommand()方法:创建并返回一个与 SqlConnection 关联的 SqlCommand 对象 ChangeDatabase 方法:为打开的 SqlConnection 更改当前数据库。 注意:数据库连接是很有价值的资源,因为连接要使用到宝贵的系统资源,如内存和网络带 宽,因此对数据库的连接必须小心使用,要在最晚的时候建立连接(调用 Open 方法),在最早 的时候关闭连接(调用 Close 方法)。也就是说在开发应用程序时,不再需要数据连接时应该立 刻关闭数据连接。这点看起来很简单,要达到这个目标也不难,关键是要有这种意识。 2.2.4 Connection 对象连接数据源代码示例 以下代码演示使用连接字符串创建数据库连接的一般方式。
分享到:
收藏