搜索
您的当前位置:首页正文

ADO .Net程序设计 教学详案 第二部分

来源:知库网
第2章 连接数据源

本章概述

用户在访问数据库的第一步操作就是连接数据源,本章就如何连接数据源进行了分析。通过本章的学习,学生可以通过掌握一些.NET数据提供程序,从而实现连接和管理SQL Server,OLE DB和ODBC数据源。 同时也介绍了在连接数据源的过程中,处理连接异常和优化管理连接的方法。

教学目标:

1. 掌握“.NET数据提供程序类”的定义和访问数据库的方法。

2. 掌握数据库安全性的基本知识和使用安全认证方式访问SQL Server数据库的方法。 3. 掌握“连接字符串”的定义和创建,打开和关闭数据连接的基本方法。 4. 掌握在数据连接过程中使用StateChange事件管理各种连接状态的方法。 5. 掌握.NET结构化异常的定义和处理连接异常的方法。 6. 掌握连接池的概念和重用连接池中数据连接的标准。

教学重点:

1. 学会使用“.NET数据提供程序类”访问数据库的方法,这是本章的考核要点。 2. 学会分析和设置“连接字符串”,这是本章的考核要点。

3. 学会创建,打开和关闭数据连接的基本方法,这是本章的考核要点。

4. 学会.NET结构化异常的处理方法和连接异常的具体处理方法,这是本章的考核要点。

教学难点:

1. 学生在学习“连接字符串”的时候,可能搞不清楚“连接字符串”各项参数的含义和

使用场合。需要通过课本上介绍的举例进行强化。 2. 学生在学习.NET结构化异常的过程中,可能对编程技巧方面没有相应的经验。需要教

师提供相应的代码案例,由简单到复杂进行介绍。 3. 学生在学习连接池的过程中,学生可能对多客户端访问和中间服务器的概念没有了解

过,需要教师在此处进行相应的补充说明。

教学资源:

2.1 选择.NET数据提供程序 2.2 定义连接

知识点

2.3 管理连接 2.4 处理连接的异常 2.5 连接池 实验 连接数据源

练习1:创建Microsoft SQL Server的连接

实验

课本

练习2:处理普通的连接异常

练习3:监测和管理SQL Server的连接池 练习4 :(可选)创建到OLE DB数据源的连接 习题1-对应知识.NET点:数据提供程序简介(2.1.1) 习题2,9-对应知识点:数据库安全性(2.2.1) 习题3-对应知识点:连接字符串的概念(2.2.2)

习题

习题4,6-对应知识点:打开和关闭连接(2.3.1) 习题5-对应知识点:处理连接事件(2.3.2)

习题7,8,10,11,13-对应知识点:管理连接(2.3) 习题12-对应知识点:处理连接的异常(2.4)

幻灯片 多媒体视频

教师光盘

实验文件 习题解答

教师光盘:\\Powerpnt\\ADO_02.ppt

教师光盘:\\Powerpnt\\connection pooling.swf

教师光盘: \\Labfiles\\ALLFILES.EXE默认解压目录下C:\\Program Files\\Msdntrain\\2389\\LABfiles\\Lab02 教师光盘:\\Tprep\\answer.doc

建议学时数

课堂教学(6课时)+实验教学(2课时)

2

第2章 连接数据源

教学过程

2.1 选择.NET数据提供程序

教学提示 :

本节主要达到二个目的。

z 了解“.NET数据提供程序类”的定义和主要分类(略讲)

z 掌握针对不同的数据源的情况下,使用相应“.NET数据提供程序类”访问数据库的方

法。(精讲) 教学内容

教学方法

教学提示

这部分内容,如果学生没有掌握好“.NET数据提供程序类”的相关知识,可以回顾第一章1.2.4节,1.2.5节,1.2.6节对“.NET数据提供程序类”的介绍。

阅书:2.1.1 ,2.1.2 讲授:

在第一章1.2.4节中,我们学习了

幻灯:第3-6页

ADO.NET对象模型主要就是由“.NET数据提供程序类”和“DataSet 类”组成的,在 本节我们将继续详细介绍“.NET数据提供程序类”的相关内容。

目前有三种比较常见的“.NET数据提供程序类”。它们分别是:

z SQL Server .NET数据提供程序 z OLE DB .NET数据提供程序 z ODBC .NET数据提供程序

这些“.NET数据提供程序类”都实现了ADO.NET中的四个核心类。这些核心类的原型分别是:

z Connection类 z Command类 z DataReader类 z DataAdapter类

“.NET数据提供程序类”与ADO.NET核心类的关系可以通过一个例子来说明。比方说,“.NET数据提供程序类”中的SQL Server .NET数据提供程序,它实现的ADO.NET四个核心类分别为:

z SqlConnection类 z SqlCommand类 z SqlDataReader类

3

z

SqlDataAdapter类

提问:

这里问一个简单的问题。如果OLE DB数据提供程序和ODBC .NET数据提供程序实现了ADO.NET四个核心类,这些类的命名是如何的?

回答:

z OleDbConnection类 z OleDbCommand类 z OleDbDataReader类 z OleDbDataAdapter类

z OdbcConnection类 z OdbcCommand类 z OdbcDataReader类 z OdbcDataAdapter类

所以其他的“.NET数据提供程序类”实现的ADO.NET核心类也依此类推。

讲解课本2.1.1,课本2.1.2 讲授:

“.NET数据提供程序”是用来访问数据源的。那么面对各种各样的数据源,如何选择合适的“.NET数据提供程序”呢? 下面给大家介绍选择“.NET数据提供程序”的基本原则。

如果是SQL Server 7.0或SQL Server 2000,那么就选择SQL Server .NET数据提供程序。如果是SQL Server 6.5或更早版本和通过OLE DB提供程序访问的任何异构数据源,那么就选择OLE DB .NET数据提供程序。如果是通过ODBC驱动程序访问的任何异构数据源,那么就选择ODBC .NET数据提供程序。 讲解课本2.1.3 小结:

通过前面的学习,我们了解了比较常见

4

阅书:2.1.3 幻灯:第7-10页

在这里,课本提供了

一些使用“.NET数据提供程序”进行数据访问的代码案例。教师可以根据学生的具体情况来选择讲解VB版的案例或者C#版的案例。

第2章 连接数据源

的几种“.NET数据提供程序类”,同时掌握了一些使用“.NET数据提供程序类”访问数据库的方法。本节内容是学习连接数据源的前提和基础,只有掌握了“.NET数据提供程序类”的相关内容,才能深入学习有关连接数据源的一些细节问题。

2.2 定义连接

教学提示 :

本节主要达到二个目的。

z 掌握数据库安全性的基本知识,学会使用不同的安全认证方式访问SQL Server数据库。

(略讲) z 掌握“连接字符串”的定义和设置方法,学会如何连接数据源的首要步骤。(精讲) 教学内容 讲授:

前面的2.1节我们介绍了使用“.NET数据提供程序类”访问数据库的方法。在具体的访问过程中,确定对方数据源的基本信息是必不可少的。 举例:

我们要去拜访一些学者或者政府要员,那么对方的家庭地址和联系方法是一定是必须要掌握的。 讲授:

在访问数据库的过程中,类似的这部分信息称为数据源连接信息。同时这些连接信息在ADO.NET中是以字符串的形式存在的,所以被称为“连接字符串”。 很多情况下,要求被访问的数据库,基于对自身安全的考虑下,往往会要求访问者提供合法的安全信息,比如帐号,密码等等必要信息。 提问:

需要提供一些安全信息才能顺利访问

5

教学方法 阅书:2.2.1 幻灯:第13页

教学提示

到需要的资源,在平时生活中有哪些场合?回答:

最常见的就是到银行去取钱,必须提供自己的银行帐号和密码。再比如公司上班,进出写字楼都必须使用员工卡才能打开办公室的门。

现在以SQL Server数据库为例给大家介绍访问数据库需要提供哪些安全方面的信息。 讲解课本2.2.1 讲授:

阅书:2.2.2,2.2.3

现在我们开始具体介绍连接字符串的幻灯:第14页 定义和设置方法。通过前面2.1节的介绍,

我们知道连接字符串的内容包括了提供访

问数据源的一些必要信息。 幻灯:第15页

这些连接信息有:

z z z z z z z

连接提供程序名称

服务器名称 数据库名称 安全性 用户名 密码 超时

课本上列举了很多使用“连接字符串”访问不同类型数据库的实例和代码。 讲解课本2.2.2和课本2.2.3 讲授:

阅书:2.2.4

确认学生和老师都已经安装了Visual Studio .NET的开发环境。

通过上面课本2.2.2和课本2.2.3的介幻灯:第16页 绍,我们学习了手工方式编写“连接字符串”的方法。在Visual Studio .NET的开发环境 中,针对“连接字符串”有更为简便的创建方法。

在Visual Studio .NET的开发环境中, “连接字符串”是通过服务器资源管理器创建和管理的。

6

第2章 连接数据源

讲解课本2.2.4 小结:

通过前面的学习,我们了解创建“连接字符串”的定义和使用方法,还通过了课本许多例子进行了巩固。学习本节内容是学习连接数据源的第一步。

2.3 管理连接

教学提示 :

本节主要达到二个目的。

z 掌握创建,打开和关闭数据连接的基本方法,可以开始和数据库建立起联系。(精讲) z 掌握连接事件的处理方法,可以在数据连接过程管理各种连接状态的变化。(精讲) 教学内容 讲授:

上面的2.2节,我们学会了“连接字符串”的使用方法。在定义了“连接字符串”之后,我们便可以基于它来创建一个数据连接,同时在需要的时候打开它,在不需要的时候关闭它。通过打开和关闭数据连接,使得应用程序与数据库之间开始真正建立了联系,以便于我们访问数据库中的内容。

实际上,每次创建并且打开一个新的数据连接的代价是很大。而且很多情况下,许多以前已经打开的数据连接可以重复使用的。每一次访问数据库就创建新的连接并不是很理想的做法。 举例:

我们平时使用计算机工作。如果我们完成第一件任务就把计算机的电源关掉。过了半小时,做第二件任务的时候再重新打开电源,继续工作。然后,处理第三件,第四

7

教学方法 阅书:2.3

教学提示

“连接池”的概念在课本2.5节有详细的介绍。此处建立初步概念即可。

件甚至以后的工作也是这样不断的打开和关闭计算机,这样是完全没有必要的。正确的做法自然是保持计算机一直处于打开状态,以便于随时能够进行工作。 讲授:

通常我们把已经打开的数据连接都存放在一个集中的区域里面。这个区域我们称为“连接池”。当对数据库创建新的连接的时候,“连接池”会把以前已经打开的数据库连接提供给我们。 讲解课本2.3 讲授:

阅书:2.3.1

课本这里介绍了ADO.NET中的

SqlConnection对象打开和关闭数据连接的代码案例。

下面我们介绍一下创建,打开,幻灯:第19页 关闭数据连接的方法。

ADO.NET中的对象可以通过Open方法和Close方法来打开和关闭数据连接。 讲解课本2.3.1 讲授:

打开和关闭是数据连接的二种状态。用户改变数据连接状态会产生相应的事件。

在ADO.NET中,都是通过StateChange事件来处理数据连接状态的改变。 讲解课本2.3.2 小结:

通过前面的学习,我们了解了创建,打开,和关闭数据连接的方法。同时也学习了连接状态改变的事件处理方法。本节内容是学习连接数据源的主要过程。

阅书:2.3.2 幻灯:第20页

课本这里介绍了ADO.NET中的

SqlConnection对象数据连接改变的事件处理代码案例。

8

第2章 连接数据源

2.4 处理连接的异常

教学提示 :

本节主要达到二个目的。

z 掌握.NET结构化异常的处理方法,为解决相关数据连接的具体异常打下基础。(精讲) z 掌握连接异常的具体处理方法,可以确诊和排除数据连接过程中的错误故障。(精讲) 教学内容 讲授:

上面课本2.3的学习,我们掌握了如何创建,打开和关闭数据连接的方法。但是由于各种不确定的要素,造成与数据库建立连接的过程产生错误或者故障。我们把这些错误和故障称为连接的异常。 异常(Exception)在软件开发的过程中,是经常出现的。必须正确处理好异常,这样才能提高应用程序的稳定性。 提问:

请大家举例在实际的应用程序开发中,遇到过哪些异常? 回答:

比方说:把一个整数除以零。会产生一个除法异常。

由于硬盘设备的故障,导致应用程序读取数据失败,会产生一个设备读取异常。

在.NET应用程序中,对异常的处理有统一的处理办法。我们称为“结构化的异常处理”。 讲解课本2.4.1

同时课本上也介绍了SQL Server中常见的异常(SqlException)的处理方法。

9

教学方法

阅书:2.4.1,2.4.2 幻灯:第23-25页

教学提示

课本此处分别介绍了“结构化的异常处理”的代码案例。

课本此处分别介绍了“处理SqlException”的代码案例。

讲解课本2.4.2 小结:

通过前面的学习,我们掌握了处理异常的基本方法。这是连接数据源过程中经常遇到的问题。正确处理好异常,才能分析和解决与数据源的连接问题。

2.5 连接池

教学提示 :

本节主要达到一个目的。

z 掌握连接池的概念和重用连接池中数据连接的标准,可以让我们管理和优化数据连接

(精讲) 教学内容 讲授:

前面2.3节我们给大家介绍了“连接池”的概念,本节将继续给大家介绍“连接池”的详细内容。 连接池可以统一保存和管理一些数据连接。这些数据本身是处在活动状态的,是可以重复使用的。 提问:

连接池本身存放在哪里呢? 回答:

连接池位于安装了数据库的计算机上。

在课本2.2.2和课本2.2.3中,我们介绍了“连接字符串”的相关概念。连接池在选择哪些连接可以被重用的时候,“连接字符串”是一个很重要的判断依据。 讲解课本2.5.1

10

教学方法

阅书:2.5.1,2.5.2,2.5.3幻灯:第29-32页

教学提示

在此处,课本中介绍了三种不同类型“连接字符串”创建数据连接的代码案例。

第2章 连接数据源

课本同时还介绍了比较常见的一些连接池,比如:OLE DB连接池,SQL Server连接池。这些连接池对应的“连接字符串”设置方面都有各自的用法。

讲解课本2.5.2和课本2.5.3 小结:

通过前面的学习,我们掌握了连接池的相关概念以及重用连接池中活动连接的方法。本节内容能够帮助我们掌握如何去管理和优化数据库的连接。

如果课堂上有时间,教师可以从下面的随堂练习抽取几题来帮助学生巩固和消化知识点。

总结

经过本章的学习,我们了解了下列的知识和内容。

z “.NET数据提供程序类”是用来访问数据库的类的集合。

z SQL Server数据库可以工作在两种身份验证模式下:Windows身份验证和SQL Server

身份验证 z 只有定义了“连接字符串”才能创建对数据源的访问。 z 使用Open 和Close方法可以创建,打开,关闭数据连接。 z 数据连接状态的改变,是通过StateChange事件来进行管理的。 z 结构化异常的处理方法是.NET中通用的异常的处理方法。 z 连接的异常可以通过结构化异常的处理方法来诊断和排除。

z 连接池是用来存储活动的数据连接,可以在必要的时候通过连接重用这些连接。

在第三章中,我们将学习执行连接环境下的对数据库进行操作的方法和步骤。

随堂练习

1. 假设你是某公司的数据库管理员。你的SQL Server数据库有一张名叫TestOrders的表。由于最近该公司的销售量猛增,目前这张表中的数据量超过了600,000行。你想要开发一个应用程序来获得这张表中的所有数据的报告。你需要确保数据的处理越快越好。你会选择以下的哪段代码?

A. Dim myOleDbConnection As New OleDbConnection _

11

(“Data Source=(local);”_ & “Initial Catalog=TestKing;”_ & “Integrated Security=true”)

Dim myOleDbCommand As New OleDbCommand_ (“SELECT * FROM TestOrders” , myOleDbConnection) Dim ordersData Reader As OleDbDataReader MyOleDbconnection.Open()

OrdersDataReader = myOleDbcommand.ExecuteReader B. Dim myOleDbConnection As New OleDbConnection _ (“provider=sqloleDb;Data Source=(local);”_ & “Initial Catalog=TestKing;” _ & “Integrated Security=true”)

Dim myOleDbCommand As New OleDbCommand_ (“SELECT * FROM TestOrders” , myOleDbConnection) Dim ordersData Reader As OleDbDataReader myOleDbconnection.Open()

ordersDataReader = myOleDbCommand.ExecuteReader C. Dim myConnection As New SqlConnection _ (“Data Source=(local);Initial Catalog=TestKing;”_ & “Integrated Security=true”)

Dim myCommand as new SqlCommand_ (“SELECT * FROM TestOrders” , myConnection) Dim ordersData Reader As SqlDataReader Myconnection.Open()

OrdersDataReader = mycommand.ExecuteReader D. Dim myConnection As New SqlConnection _ (“Data Source=(local); “Initial Catalog=TestKing;” _ & “Integrated Security=true”)

12

第2章 连接数据源

Dim myCommand as new SqlCommand(“SELECT * FROM TestOrders”) Dim ordersData Reader As SqlDataReader Myconnection.Open()

ordersDataReader = myCommand.ExecuteReader 答案:C

2. 如果在特定的时间用以下的连接字符串连接SQL Server 2000,将会创建几个连接池? Integrated Security=SSPI;Initial Catalog=Nursing Integrated Security=SSPI;Initial Catalog=Administration

Provider=SQLOLEDB.1;User ID=plantw;Initial Catalog=Personnel Provider=SQLOLEDB.1;User ID=plantw;Initial Catalog=Accounting Provider=SQLOLEDB.1;User ID=linkr;Initial Catalog=Nursing Provider=SQLOLEDB.1;User ID=plantw;Initial Catalog=Accounting Integrated Security=SSPI;Initial Catalog=Nursing Integrated Security=SSPI;Initial Catalog=Nursing

Provider=SQLOLEDB.1;User ID=plantw;Initial Catalog=Nursing Provider=SQLOLEDB.1;User ID=linkr;Initial Catalog=Nursing Integrated Security=SSPI;Initial Catalog=Administration

Provider=SQLOLEDB.1;User ID=wheatc;Initial Catalog=Accounting (选择最佳答案) A. 7 B. 3 C. 12 D. 2 E. 4 答案:A

13

3. 你使用SQL Server数据库和SqlClient数据提供者开发了一个应用程序。你的程序中包括以下四段代码。每一段代码都被调用了一次。 Dim TKConnection1 As New SqlConnection() TKConnection1.ConnectionString = “Data Source=”_ & “ProdServer;Initial Catalog=Billing;”_ & “Integrated Security=true” TKConnection1.Open()

Dim TKConnection2 As New SqlConnection() TKConnection2.ConnectionString = “DataSource=”_ & “ProdServer;Initial Catalog=Billing;”_ & “Integrated Security=true” TKConnection2.Open()

Dim TKConnection3 As New SqlConnection() TKConnection3.ConnectionString = “Data Source=”_ & “SearchServer;Initial Catalog=Search;”_ & “Integrated Security=true” TKConnection3.Open()

Dim TKConnection4 As New SqlConnection() TKConnection4.ConnectionString = “Data Source=” _& “ProdServer;Initial

Catalog=OrderEntry;” _& “Integrated Security=true” TKConnection4.Open()

除了你的程序外,没有其它的程序在使用SQL Server。你的程序以同样的用户身份运行以上四段代码。你启动了程序,连接池被启用了。在整个应用程序的运行过程中都没有发生连接超时。一共创建了几个连接池? A. One B. Two C. Three D. Four 答案:C

14

第2章 连接数据源

4. 你的SQL Server 6.5数据库中有一张名叫TestPurchases的表,由一百多万行数据组成。 你在开发一个应用程序来把TestPurchases中的数据与一个DataReader对象关联起来。你想确保该应用程序处理数据越快越好。你创建了一个SQL SELECT语句存储在局部变量tkSQLSelect中。你需要初始化一个SqlConnection对象和一个SqlCommand对象来获取DataReader对象。 以下哪段代码是适用的?

A. Dim myConnection As New OleDbConnection _ (myOleDbConnectionString)

Dim tkCommand As New OleDbCommand _ (tkSQLSelect)

B. Dim myConnection As New OleDbConnection _ (myOleDbConnectionString)

Dim tkCommand As New OleDbCommand _ (tkSQLSelect, myConnection)

C. Dim myConnection As New SqlConnection _ (mySqlConnectionString)

Dim tkCommand As New SqlCommand _ tkSQLSelect)

D. Dim myConnection As New SqlConnection _ (mySqlConnectionString)

Dim tkCommand As New SqlCommand _ (tkSQLSelect, myConnection) 答案:B

5. 你创建了一个XML Web Service来从SQL Server数据库获取数据。你新建了一个叫做TestKConnection的SqlConnection对象,并将它的connectionString的Max Pool Size属性设置为50。现在,50个连接都在使用中。然而,一个对第51个连接的请求到来了。最可能的结果是什么?

A. 一个异常立即被抛出了。

B. 当前连接池被扩展,又添加了50个连接。

C. 一个新的有着同样的最大连接数的连接池被创建了。

15

D. 该请求被放进了队列直到一个连接可用或者超时发生。 答案:D

布置作业

1. 完成书后习题1-习题13

2. 预习本章中的要求的实验,在实验课上准备操作。

实验注意事项:

1

Page67

实验设置 5)中,“依次展开“安全性”、“登录”文件夹”建议改为“展开“安全性”文件,然后选中“登录”选项”,因为“登录”是“安全性”文件夹下的一个选项。

表2-25中:列出了账户的密码,而在实际的“登录”选项下是看不到用户密码的。 2

Page71

表2-29中应该还需添加一条记录,把“服务器”由原来默认的“localhost”改为“(local)”,否则连接数据库会失败。同时在实验步骤中,应该添加一个步骤,让用户把本地SQL Server中账户sa的密码改为“2389”。

研究连接超时中的第5)步 ,“修改连接字符串”建议改为“修改页面上超时文本框中的值,把15改为5” 3

Page72

练习2 中,运行程序的时候,需要提醒用户把页面上的用户名由默认的“localhost”改为“(local)”,否则无法连接到数据库。

表2-31给出了常规异常的操作行为,但是没有具体给出应该如何实现这些行为的操作。 4 5

Page76

6)“关闭并释放JohnK1连接”,应该改为“关闭并释放JohnK2连接”。 Page 85

在练习4中,文件“\\Program Files\\Microsoft

Office\\Office10\\Samples\\Northwind.mdb”,实际有的机器上可能没有这个文件,所以教师应事先对此做说明。

16

因篇幅问题不能全部显示,请点此查看更多更全内容

Top