ImageVerifierCode 换一换
格式:PPT , 页数:232 ,大小:2.44MB ,
文档编号:8228056      下载积分:15 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-8228056.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(kld)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(《Visual C# NET程序设计基础》课件010.ppt)为本站会员(kld)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

《Visual C# NET程序设计基础》课件010.ppt

1、第10章 使用ADO.NET进行数据库访问第第10章章 使用使用ADO.NET进行数据库访问进行数据库访问10.1 数据库概述数据库概述10.2 ADO.NET的基本组件的基本组件10.3 使用使用ADO.NET10.4 综合案例:图书管理系统综合案例:图书管理系统使用使用 DataGrid显示和操作数据显示和操作数据本章小结本章小结练习与作业练习与作业上机部分上机部分(十十)第10章 使用ADO.NET进行数据库访问 学习目标 解释ADO.NET 掌握ADO.NET基本组件的使用 掌握基本数据库编程的步骤和方法第10章 使用ADO.NET进行数据库访问10.1 数数据据库库概概述述 数据库,

2、顾名思义,就是存放数据的地方。在计算机中,数据库是数据和数据库对象的集合。数据库对象主要包括表、视图、存储过程、触发器等等,要管理数据库必须使用相应的管理系统。数据库管理系统(DBMS)就是一套计算机应用软件系统,主要作用是建立用户与数据库之间的信息处理通道,让用户能通过DBMS来存取和操作数据库中的数据,这些数据包括建立数据库、建立表格、添加、更新和删除数据以及查询数据等。目前通用的数据库管理系统主要有Access、SQL Server、Oracle、MySQL等。在使用数据库之前必须要理解一些基本的概念。第10章 使用ADO.NET进行数据库访问 1关系模型关系模型 关系模型把世界看做是实

3、体(Entity)和联系(Relationship)构成的。所谓实体就是指现实世界中具有自身独有的特征或属性并与其他实体保持联系的对象。在关系模型中实体以表的形式来表现,表的每一行描述实体的一个实例,表的每一列描述实体的一个特征或属性。所谓联系就是指实体之间的关系或对应关系。联系可分为三种:一对一的联系。如:一个学生只有一个学号,姓名学号为一对一的联系。第10章 使用ADO.NET进行数据库访问 一对多的联系。如:相同班级的学生有很多个,班级学号为一对多的联系。多对一的联系。如:很多学生有同一个班级,学号班级为多对一的联系。通过联系就可以用一个实体的信息来查找另一个实体的信息。在图10-1中,

4、三张表组成了一个关系模型,每张表都是一个实体。从图10-1(c)中可看出,最终的结果依靠两张原始表的属性关系(如箭头所示)即学号的唯一标识得出。关系模型能够得到广泛使用的原因在于它的灵活性及操作的简单。如Microsoft Access数据库、SQL Server数据库都是基于这种模型。第10章 使用ADO.NET进行数据库访问图10-1 关系模型第10章 使用ADO.NET进行数据库访问 2关系数据库对象关系数据库对象 1)表 表是数据库的对象,表包含数据库的数据。一个数据库由一个或多个表组成,每个表存储一些相关的数据。数据库中的表与表之间有时可能存在着关联。表是一个分别排成行跟列的相关记录

5、的集合,类似于二维数组或Excel中的电子表格。数据就是以行和列的形式进行存储,每个列表头就是一个字段,每一行存储实际的数据。在设计表时我们可以根据功能为表创建各种列,如针对图10-1所示的学生信息表,采用Access数据库,设计了三列,分别为学号、姓名和所属班级。请看图10-2所示学生信息表的具体结构。第10章 使用ADO.NET进行数据库访问图10-2 学生信息表结构 第10章 使用ADO.NET进行数据库访问 2)记录和字段 记录是表示数据的集合。记录在逻辑上相当于表的行。例如,学生信息表的一条记录可能就包含某个学生的信息。记录是由多个字段组成的。记录中的每个字段都包含了关于该记录的单条

6、信息。例如,学生信息表记录有学号、姓名和所属班级等字段。图10-3对学生信息表添加了一些记录。第10章 使用ADO.NET进行数据库访问图10-3 学生信息表第10章 使用ADO.NET进行数据库访问 3)主键 主键唯一标识了表的每一行。主键可以是一个字段,也可以是几个字段的组合。对表中的每一行(记录)来说,主键的值都是惟一的。例如,“学号”字段是“学生信息表”的主键,因为任何两个学生的学号都不相同。在Access中,可以通过鼠标操作的方式为表添加一个主键,如图10-4中学号上有个标识。第10章 使用ADO.NET进行数据库访问图10-4 具有主键的学生信息表第10章 使用ADO.NET进行数

7、据库访问 4)外键 外键是由一个或者多个字段组成的,而这些字段又是其他表的主键(列)。外键描述了表与表之间的关联方式。5)关系 关系是建立在两个表的公共字段(列)之间的一种关联。关联可以是一对一、一对多或者多对多。关系使查询结果中可以包括来自多个表的数据。例如,图10-5所示的班级信息表和学生信息表之间的一对多关系将允许查询返回相关专业的所有学生。第10章 使用ADO.NET进行数据库访问图10-5 表的关系 第10章 使用ADO.NET进行数据库访问 3SQL语言语言 前面简单地介绍了一下数据库的模型及一些基本的术语,学到这里不知读者有没有想过,怎么样才能在一个程序中把数据放进数据库呢?如何

8、得到数据库的数据呢?如何去更新、修改数据库里面的数据呢?解决这些问题其实很简单,就是利用SQL语言。SQL(Structured Query Language)全称是“结构化查询语言”,是数据库中使用的标准数据查询语言。早前美国ANSI对SQL进行规范后作为关系数据库管理系统的标准语言,后来得到国际标准化组织(ISO)的支持已成为国际标准。SQL是一种高级的非过程化语言,从名称上看,SQL适合于编写查询语句,可实际上它实现的功能远远不止于查询,如创建、删除、修改、更新等第10章 使用ADO.NET进行数据库访问一些对数据库的操作都能得心应手。接下来针对项目中的数据表来编写SQL语句来实现对表数

9、据的查找、插入、更新、删除等操作。1)Create table语句 Create table 语句用于在数据库中建立一张新表,包括表的结构。在Access数据库中,读者可以使用图形化界面直接创建及修改。也可以通过SQL语句灵活实现。这里只要了解利用语句是如何编写就行了。请看下面对Create table语句的定义:Create table 表名(列名1 类型,列名2 类型,其他参数)在数据库中需要创建一个名称为“学生成绩表”的表格:Create table学生成绩表(学号 int PRIMARY KEY,姓名 char(10),高等数学integer,数据结构integer,大学语文 inte

10、ger,体育 integer);第10章 使用ADO.NET进行数据库访问 2)Alter table语句 Alter table语句用于修改表的结构,语句定义如下:Alter table 表名 ALTER COLUMN 列名 类型|ADD 列名 类型|DROP COLUMN 列名 前面创建了一张学生成绩表,现在用Alter table语句来修改学生成绩表的结构:Alter table 学生成绩表 ADD 性别 char(2);Alter table 学生成绩表 ALTER COLUMN 姓名 char(8);说明说明:在上面的两个范例中,利用Alter table语句向学生成绩表中添加一个名

11、为“性别”的列,并把学生成绩表名为“姓名”的列的数据类型大小改为8。第10章 使用ADO.NET进行数据库访问 3)INSERT INTO语句 前面利用Create table语句为学生信息管理项目创建了表的结构,现在还需要往表里存放数据、读取数据及修改数据等操作。INSERT INTO命令语句就是用来向表中的列插入值。INSERT INTO 语句定义如下:INSERT INTO 表名(列名1,列名2,)VALUES(常量1,常量2,)其中(列名1,列名2,)可省略。例句:INSERT INTO 学生成绩表 VALUES(0001,李明,88.5,69,75,90);学号 姓名 高等数学 第1

12、0章 使用ADO.NET进行数据库访问 说明说明:在上述例句中,利用INSERT INTO语句向学生成绩表的各列都插了值,现表中已有一行值。注:括号后面的值应该跟所定义表的结构的顺序一致。如果表的结构中有定义字符的数据类型,应使用单引号。4)UPDATE语句 利用UPDATE 命令语句可用于更新表中的数据。定义如下:UPDATE 表名 SET 字段=值,字段=值,WHERE 条件语句 例句1:UPDATE 学生成绩表 SET 体育=85 WHERE 学号=0001;例句2:UPDATE 学生成绩表 SET 体育=85;第10章 使用ADO.NET进行数据库访问 说明说明:在上面的两个例句中,利

13、用UPDATE语句对学生成绩表进行更新。例句1把学生成绩表的学号为0001的学生的体育成绩更改为85分。例句2把学生成绩表的每位学生的体育成绩都更改为85分。不使用WHERE子句UPDATE命令将更新表中的所有行。5)DELETE语句 利用Delete语句可用于删除表的记录。定义如下:DELETE FROM 表名 WHERE 条件语句 请看范例:DELETE FROM学生成绩表WHERE 学号=03002;解释:利用DELETE语句把学生成绩表的学号为03002的学生的记录删除。第10章 使用ADO.NET进行数据库访问 6)SELECT语句 对数据库的数据进行查询是SQL语言的核心部分,语句

14、的一般格式为:SELECT 目标列 FROM 表名 WHERE条件语句 GROUP BY 列名1 HAVING 内部函数表达式 ORDER BY 列名2 ASC/DESC 例句(1):SELECT 学号 FROM 学生成绩表;说明:使用SELECT语句查找学生成绩表的所有学号的值。第10章 使用ADO.NET进行数据库访问 例句(2):SELECT 学号,姓名 From 学生成绩表;说明:使用SELECT语句查找学生成绩表的所有学号、姓名的值。例句(3):SELECT*FROM 学生成绩表;说明:使用SELECT语句查找学生成绩表的所有记录,即学生成绩表中的所有行。“*”代表所有列。接下来用限

15、定词、通配符、函数及操作数等来对SELECT语句进一步扩充。通配符与多重条件查询 通配符使用LIKE或NOT LIKE操作数进行模糊条件查询,以判断列值是否与指定的字符串格式相匹配。常用通配符如表10-1所示。第10章 使用ADO.NET进行数据库访问表表10-1 常用通配符常用通配符通 配 符 描 述%条件包含零个或多个字符的任意字符串 _(下划线)条件包含任何的且单个的字符 如指定在范围a-c或集合abc中的任何单个字符 如指定不属于范围a-c或集合abc的任何单个字符 第10章 使用ADO.NET进行数据库访问 例句(4):SELECT*FROM学生成绩表WHERE 姓名LILE J%;

16、说明:使用SELECT语句查询学生成绩表所有列值首字符为“J”的值。上面的插入、更新、删除、查找命令为SQL语句最为基础也是最常用的命令,事实上在一般项目中用得多的就是SELECT语句命令了,而其他的的插入、更新等命令则不必编写,因为可以借助ADO.NET技术的CommandBuilder对象自动生成。如果读者有兴趣的话可以再进一步学习有关SQL语句命令的扩充。第10章 使用ADO.NET进行数据库访问 7)DROP、DELETE、TRUNCATE TABLF语句的区别 DROP、DELETE、TRUNCATE TABLE语句都为删除命令语句,但它们之间的使用是有区别的。DROP语句用于删除整

17、个表格,即删除表的数据跟表结构;DELETE语句用于有选择地删除表中的行值;TRUNCATE TABLE语句用于删除整个表所有行的值,但不删除表结构。语法定义如下:DROP TABLE 表名;DELETE FROM 表名 WHERE 条件语句;TRUNCATE table 表名;下面通过一些SQL语句示例实现对表中数据进行操作。第10章 使用ADO.NET进行数据库访问 先创建一个名STUDENT的表,并向表插入三行值(利用CREATE TABLE、INSERT INTO语句)。Create table STUDENT(学号 int,姓名 char(8),年龄 int);INSERT INTO

18、 STUDENT VALUES(03001,张三,20);INSERT INTO STUDENT VALUES(03002,李四,21);INSERT INTO STUDENT VALUES(03003,王五,23);例句(1):DELETE FROM STUDENT WHERE 学号=03002;说明:删除STUDENT表中学号为03002学生的记录。例句(2):TRUNCATE TABLE STUDENT;说明:删除STUENDT表的所有行,即表中的所有学生信息全部删除。第10章 使用ADO.NET进行数据库访问 例句(3):DROP TABLE STUDENT;说明:删除STUDENT表

19、。注意:DROP TABLEI不能删除有外键约束引用的表,必须先将外键约束删除。TRUNCATE TABLE同样不能用于有外键约束引用 的表,在这种情况下,就要用到不带WHERE子句的DELETE 语句了。8)使用AND、OR、NOT关键字进行多重条件查询 例句:SELECT 姓名 FROM STUDENT WHERE 学号=03003 AND 年龄=22;说明:查询STUDENT表中列为姓名的学号为03003且年龄为22的值。第10章 使用ADO.NET进行数据库访问 注意注意:在运算过程中NOT优先级最高,次之AND最后为OR,但可通过加括号来改变。9)使用ALL、DISTINCT、TCO

20、P限定词 TOP关键字用来限制显示查询返回得到的行数。例句(1):SELECT TOP2*FROM STUDENT;说明:查询STUDENT表的所有行且只显示前两行。ALL关键字用来显示查询返回得到的所有行(包括重复的行)。例句(2):SELECT ALL 学号 FROM STUDENT;说明:查询STUDENT表的学号字段所有行的值。DISTINCT关键字用来删除查询得到的重复值的行。第10章 使用ADO.NET进行数据库访问 例句(3):SELECT DISTINCT 学号 FROM STUDENT;说明:查询STUDENTG表的学号字段不重复值的所有行的值。10)使用NOTBetween

21、AND与IN关键字 BetweenAND用于查找字段值在或者不在指定范围内的值。例句(1):SELECT*FROM STUDENT WHERE 年龄 Between 20 AND 23;说明:查询在STUDENT表中年龄介于2023之间的所有行。第10章 使用ADO.NET进行数据库访问 例句(2):SELECT*FROM STUDENT WHERE 年龄 NOT Between 20 AND 23;说明:查询在STUDENT表中年龄不介于2023之间的所有行。IN关键字用来查找字段值属于在指定集合的范围内的值。例句(3):SELECT*FROM STUDENT WHERE 学号 in(030

22、01,03003);说明:查询在STUDENT表中学号为03001跟03003的所有行。11)使用集合函数 集合函数用于统计个数及计算数值,功能如表10-2所示。第10章 使用ADO.NET进行数据库访问表表10-2 常用集合函数表常用集合函数表 函 数 功 能 说 明 COUNT(ALL|DISTINCT*)统计所有行数 COUNT(ALL|DISTINCT)统计指定列的行数 SUM(ALL|DISTINCT)计算表达式所有值的和 AVG(ALL|DISTINCT)计算表达式的平均值 MIN(ALL|DISTINCT)计算表达式的最小值 MAX(ALL|DISTINCT)计算表达式的最大值

23、第10章 使用ADO.NET进行数据库访问 说明:ALL与DISTINCT是可选项,ALL计算时忽略重复,DISTINCT则不重复。COUNT(*)会返回所有行包括值为空(NULL)的记录行数,COUNT(field)则不返回值为空的记录行数。例句:SELECT COUNT(姓名)FROM 学生成绩表 WHERE 高等数学80;说明:查询学生成绩表中高等数学80分以上的学生的姓名。12)使用ORDER BY、GROUP BY、HAVING子句 OREDER BY子句用于对查询所得行进行排序,关键字ASC为升序,DESC为降序,默认则为升序排序;GROUP BY子句用于对查询所得行按某一列或多列

24、值进行分组显示,值相等的则为同一组;HAVING子句则用于在使用GROUP BY子句进行分组后对行进行判断筛选。第10章 使用ADO.NET进行数据库访问 例句(1):SELECT*FROM STUDENT ORDER BY 年龄DESC;说明:查询STUDENT表的所有记录并以年龄字段显示为降序排序。例句(2):SELECT 姓名 FROM 学生成绩表 GROUP BY 学号 HAVING 高等数学60;说明:查询STUDENT表中高等数学分数60分以上的学生的姓名,并以学号字段进行分组显示。注意注意:HAVING子句应始终在GROUP BY 子句之后使用。上面所讲的SQL语法只是一些比较简

25、单、常用的语句。如果读者想再对SQL语言进一步深入学习、探索的话,应该看一些其他关于SQL方面的书籍,如SQL SERVER等。第10章 使用ADO.NET进行数据库访问10.2 ADO.NET的基本组件的基本组件 无论需要怎样使用数据,都应该理解ADO.NET中数据方法的一些基本概念。你也许永远不需要知道数据处理的一些细节,但是理解ADO.NET中的数据结构和主要数据组件,以及理解各部分如何组合到一起,都会对你有所帮助。本节并不讲述详尽的细节,而是介绍 ADO.NET 中与数据集成相关的概念。1定义定义 ADO.NET 是.NET Framework架构中一组用于数据操作的类。它提供了为非连

26、接环境设计的系统、高级XML支持的编程模型和在Microsoft.NET 框架内用于数据访问的类、接口、结构和枚举类型。第10章 使用ADO.NET进行数据库访问 ADO.NET组件主要分为两大类:(1)数据存取:DataSet类,独立于不同数据源的数据存取服务组件。(2)数据操作:.NET Framework Data Provider和NET Framework的数据提供者,包含有四个核心组件:Connection对象、Command对象、DataReader对象和DataAdapter对象。利用微软官方发布的ADO.NET架构图(如图10-6),可以让我们更清楚地了解上述两大类组件之间的

27、关系。第10章 使用ADO.NET进行数据库访问图 10-6 ADO.NET架构图第10章 使用ADO.NET进行数据库访问 2ADO.NET对象概述对象概述 ADO.NET中Connection对象建立到数据源的连接。它有ConnectionString属性、Open 和Close方法以及使用BeginTransaction方法开始事务处理的能力。Command对象允许你查询数据库、向它发送命令或者调用它的存储过程。可以使用该对象的某个Executexxx 方法来执行这些操作。例如,使用ExecuteNonQuery方法向数据库发送操作查询(比如INSERT或DELETE SQL 语句),并

28、使用ExecuteReader方法执行会返回结果集的SELECT查询。其他属性允许你设置命令超时或为调用存储过程设置参数。你必须手动地把Command对象和先前已经连接到数据源的Connection 对象相关联。第10章 使用ADO.NET进行数据库访问 DataReader对象是Command对象的ExecuteReader方法返回的对象,它代表只向前的、只读的结果集。每次调用DataReader的Read方法时都会产生一行新的可用结果,然后,就可以使用GetValue方法或者某个强制类型的Getxxx 方法(比如GetString或GetFloat)查询每个单独的字段。记住,不能使用Dat

29、aReader对象更新数据库。DataAdapte对象起着Connection对象和 DataSet 对象之间的桥梁作用。其 Fill 方法将数据从数据库移到客户端的DataSet对象,而其 Update 方法则按相反方向移动数据,它使用由应用程序在DataSet中添加、更改或删除的行对数据库进行更新。第10章 使用ADO.NET进行数据库访问 DataSet对象是ADO.NET非连接架构下的主要对象。它在使用时就像驻留在客户端计算机上的一个小型关系数据库,但又与任何具体的数据库完全无关。它包含一个DataTable 对象的集合,其中每个 DataTable对象都包含一个不同的结果集(通常情况

30、下,它是对不同数据库表的查询结果)。DataTable对象包含一个DataRow对象的集合,而每个DataRow对象则包含了结果集里不同行中的数据。DataSet 还包含一个 DataRelation 对象的集合,其中每一项都对应一个不同DataTable 对象之间的关系,这很像关系数据库中表与表之间的关系。这些关系允许你使用简单而又很有效的语法编写代码,从而实现同一DataSet中表与表之间的导航。第10章 使用ADO.NET进行数据库访问 .NET框架包括许多.NET Data Provider,例如SQL Server.NET Data Provider,OLE DB.NET Data

31、Provider for SQL和OLE DB Provider for Microsoft Jet等。你也可以为任意数据源编写自定义的.NET Data Provider。3ADO.NET组件的命名空间结构组件的命名空间结构 ADO.NET中常用的NET Framework数据提供组件有两种,分别是SQL Server数据提供组件和OLE DB数据提供组件。前者支持SQL Server7.0或更高版本,直接与SQL Server底层API沟通,性能较高。它属于System.Data.SqlClient命名空间。OLE DB数据提供组件用于访问如Access、Oracle等数据源。当然OLE

32、DB组件也可以用于访问SQL Server数据源,但由于有中间层的加入,性能不是很好。该组件属于System.Data.OleDb命名空间。第10章 使用ADO.NET进行数据库访问 上面两种数据提供组件,都实现了Connection对象、Command对象、DataReader对象和DataAdapter对象的模型,如表10-3所示。此外,我们还将使用到System.Data命名空间,它也是.NET Framework用来存取数据的主要组件。表10-4介绍了System.Data的几个常见的子类。各个子类的关系如图10-7所示。第10章 使用ADO.NET进行数据库访问表表10-3 两种数据

33、提供组件中的对象两种数据提供组件中的对象 ADO.NET 数据提供组件 SQL Server OLE DB Connection SqlConnection OleDbConnection Command SqlCommand OleDbCommand DataAdapter SqlDataAdapter OleDbDataAdapter DataReader SqlDataReader OleDbDataReader 第10章 使用ADO.NET进行数据库访问表表10-4 System.Data的几个常见的子类的几个常见的子类类 名 称 功 能 说 明 DataSet 内存中的高速缓存数据

34、DataTable 内存中数据的一个表格 DataView 内存中数据的一个视图 DataRow DataTable 中的数据列 DataTableCollection DataSet 中的表格集合 DataRowCollection DataTable 中的数据行的集合 DataColumn DataTable 中的字段的模式描述 DataException 使用 ADO.NET时产生的异常 第10章 使用ADO.NET进行数据库访问图10-7 System.Data中各个子类的关系第10章 使用ADO.NET进行数据库访问 使用Visual Studio 2005创建程序时,系统将默认应用

35、System.Data.dll组件。因此,不需要再添加对System.Data的引用,直接在程序中使用using把命名空间导入即可。如果要引用该组件,请在项目的引用上单击,添加相应的组件,如图10-8所示。注意注意:组件,也叫程序集,是命名空间的物理表示。如果要使用using System.Data;语句,必须先将System.dll组件添加进来。直接在项目中输入using语句是无效的。第10章 使用ADO.NET进行数据库访问图10-8 添加程序集引用第10章 使用ADO.NET进行数据库访问10.3 使用使用ADO.NET 开发应用程序时,可能需要通过不同的方式使用数据,有时只希望数据显示

36、在窗体上,而有时需要设计一种方法来与其他组织共享信息。使用数据时,可以使用各种对象来检索和修改数据库中的信息。一般来说,要在 ADO.NET 中使用数据库,需要执行下列步骤:(1)连接到数据库。(2)请求特定的数据。确定想要检索的数据以及需要对它进行访问的方式是只读访问还是读/写访问。(3)检索并显示数据。(4)关闭连接(在某些应用程序中)。第10章 使用ADO.NET进行数据库访问 (5)修改检索得到的数据(如果有读/写访问权限)。(6)重新打开连接(在某些应用程序中)。(7)将对数据所做的所有更改都传回数据库。(8)关闭连接。在上述过程中,必须采用ADO.NET中用于连接数据源和使用数据的

37、所有必要组件。在本节里,将学习这些组件对象的创建和设置,以及如何使用这些对象连接到数据库、检索数据、修改数据以及如何将更新后的数据传回数据库。10.3.1 使用使用 Connection 对象对象 无论是在连接模式还是非连接模式下工作,在使用数据源时,需要执行的第一步都是打开到数据源的连接。用ADO.NET术语,这就意味着创建一个到指定数据库的Connection对象。第10章 使用ADO.NET进行数据库访问 1选择选择Connection 对象对象 可以使用 Connection 对象来连接特定的数据源。既可以使用 SqlConnection 连接到 SQL Server 数据库,也可以使

38、用 OleDbConnection 连接到其他类型的数据源。这里要注意的是,SqlConnection和OleDbConnection位于不同的命名空间下,分别为System.Data.OleDb和System.Data.SqlClient,使用时请先将其导入。表10-5和表10-6分别说明了两种Connection对象的属性和方法。第10章 使用ADO.NET进行数据库访问表表10-5 SqlConnection属性和方法属性和方法 属 性 功 能 说 明 ConnectionString 获取或设置打开SQL Server 的连接字符串 ConnectionTimeOut 获取尝试建立连接

39、的等待时间 Database 获取目前连接的数据库名称 DataSource 获取SQL Server 实例的名称 ServerVersion 获取SQL Server 实例的版本 State 获取目前SqlConnection的连接状态 方 法 功 能 说 明 Close 关闭SQL Server 数据库的连接 Open 打开SQL Server 数据库的连接 第10章 使用ADO.NET进行数据库访问表表10-6 OleDbConnection的属性和方法的属性和方法属 性 功 能 说 明 ConnectionString 获取或设置打开数据库的连接字符串 ConnectionTimeOu

40、t 获取尝试建立连接的等待时间 Database 获取目前连接的数据库名称 DataSource 获取数据库服务器名称或文件名称 Provider 获取OLE DB 数据提供者名称 ServerVersion 获取数据库服务器的版本 State 获取目前OleDbConnection的连接状态 方 法 功 能 说 明 Close 关闭OLE DB 数据库的连接 Open 打开OLE DB 数据库的连接 第10章 使用ADO.NET进行数据库访问 2指定数据源指定数据源 在选择了连接对象类型之后,可以使用Connection对象ConnectionString属性来指定Data Provider

41、、数据源和其他用于建立连接的信息。连接字符串的格式在SqlClient命名空间和OleDb命名空间之间稍有不同。3设置设置ConnectionString属性属性 ConnectionString是Connection对象的关键属性,它是一个字符串,用于定义正在连接的数据库的类型、位置以及其他属性,这些属性用分号分隔。通常情况下,该字符串包含如下信息:(1)Provider特性:它指定用于连接到数据的OLE DB第10章 使用ADO.NET进行数据库访问Provider的名称。在书写时,所有合法的值包括SQLOLEDB(Microsoft SQL Server的OLE DB Provider)

42、、Microsoft.Jet.OLEDB.4.0(Microsoft Access的OLE DB Provider)和MSDAORA(Oracle的OLE DB Provider)。(2)Data Source 特性:它指定数据库的位置,既可以是 Access 数据库的路径,也可以是 SQL Server或Oracle数据库所在计算机的名称。(3)User ID和Password特性:它们指定用户名和该数据库的有效帐户密码。(4)Initial Catalog特性:当连接到SQL Server或Oracle数据源时,它指定数据库的名称。第10章 使用ADO.NET进行数据库访问 (5)Inte

43、grated Security特性:SQL Server的整合安全性。若为True,则用Windows帐户进行验证;若为False,则需要在连接时指定用户名和密码。一旦正确设置了ConnectionString,就可以通过调用Open方法打开连接:string constr=Provider=Microsoft.Jet.OLEDB.4.0;+DataSource=+Application.StartupPath+db1.mdb;OleDbConnection cn=new OleDbConnection();cn.ConnectionString=constr;cn.Open();/打开db1

44、数据库 通过将连接字符串传递给 Connection 对象的构造函数,可以使代码更为简洁:OleDbConnection cn=new OleDbConnection(constr);cn.Open();/更简洁的方式打开db1数据库第10章 使用ADO.NET进行数据库访问 以上描述同样可以用于SqlConnection对象,其中只有一个区别:不能包括连接字符串的Provider特性。实际上,在这种情况下根本就不需要该特性,因为使用SQL Server.NET Data Provider时,只能连接到SQL Server数据库。另一个要注意的地方是如果连接到本地计算机上的SQL Server

45、,可以将 Data Source特性指定为(local):string constr=Data Source=(local);User ID=sa;Password=41919;Initial Catalog=pubs;SqlConnection cn=new SqlConnection(constr);cn.Open();第10章 使用ADO.NET进行数据库访问 该连接字符串可以包括一些其他特性。例如,Connection Timeout 特性用来设置连接尝试能够等待的时间(缺省值为15秒),如在这段时间内无法连接,将返回错误。打开连接之后,可以用ConnectionTimeout属性查询

46、该超时时段长度:/指定一个更长的连接到 Pubs 时的超时时段。string constr=Data Source=(local);User ID=sa;Password=41919;Initial Catalog=pubs;Connection Timeout=30;SqlConnection cn=new SqlConnection(constr);cn.Open();Debug.Write(cn.ConnectionTimeout);/在输出窗口显示30第10章 使用ADO.NET进行数据库访问 是否要在连接字符串中传递其他值,取决于连接所使用的特定OLE DB Provider。例如,

47、Microsoft.Jet.OLEDB.4.0 的 Provider 支持设置数据库密码,也支持包含有关组和用户信息的系统数据库。使用SQL Server.NET Data Provider,可以在连接字符串中指定其他两个属性:Packet Size和Workstation ID。前者用来设置网络数据包(该数据包用于与SQL Server通信)的大小;后者可以用于标识客户端。有时,Packet Size 属性对于优化应用程序与SQL Server之间的数据流量很有用处。例如,如果处理大的 BLOB 字段(比如图像),那么可以设置一个较大的值;如果经常对服务器作小数据量的查询,那么可以设置一个较

48、小的值。第10章 使用ADO.NET进行数据库访问 /优化对 BLOB的连接。string constr=Data Source=(local);User ID=sa;Password=41919;Initial Catalog=pubs;Packet Size=32767;SqlConnection cn=new SqlConnection(constr);cn.Open();Debug.Write(cn.PacketSize);/在输出窗口显示32767 4打开和关闭连接 如前所述,Open 方法和Close方法不带参数:OleDbConnection cn=new OleDbConnec

49、tion(constr);cn.Open();/执行数据库操作 cn.Close();第10章 使用ADO.NET进行数据库访问 State属性和StateChange事件 (1)State属性是一个按位编码的字段,指示数据库连接的当前状态。它可以是下列ConnectionState枚举值中一个或者多个值的组合:Closed、Connecting、Open、Executing、Fetching和Broken。通常情况下,需检查 State 属性以确保打开一个关闭着的连接或者关闭一个已打开的连接,如下列代码所示:/如果连接已打开,关闭该连接 if(cn.State=ConnectionState

50、.Open)cn.Close();需要注意的是,当连接不再需要时,应该及时把它关闭,以免占用过多的数据库连接资源。第10章 使用ADO.NET进行数据库访问 (2)StateChange事件是当State属性发生改变时触发的,经常用在“当数据库连接对象的连接状态发生改变时”,可以对连接对象进行及时处理。【例例10-1】使用控制台程序建立对SQL Server的连接。using System;using System.Data.SqlClient;using System.Data;class TestConnection static void Main()SqlConnection cn=n

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|