C#程序设计课件第14章_第1页
C#程序设计课件第14章_第2页
C#程序设计课件第14章_第3页
C#程序设计课件第14章_第4页
C#程序设计课件第14章_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,第14章 访问多个数据表,大多数数据库应用程序都需要访问具有多个数据表的数据库,本章将在上一章的基础上介绍如何使用ADO.NET管理和关联保存在多个表中的数据。在第13章中曾介绍了如何以编程方式创建OleDbConnection、OleDbDataAdapter和DataSet实例,除此之外,还可以使用VC#.NET提供的相关控件进行创建。上一章使用的DataSet属于非类型化DataSet,本章将介绍如何使用类型化DataSet。另外,还将介绍如何使用DataReader访问数据库。,2,本章学习要点,以图形化方式创建OleDbConnection和OleDbDataAdapter 创建和使用类型化DataSet 创建DataRelation以关联多个表的数据 使用数据绑定技术将控件绑定到DataSet 使用DataGrid控件 使用DataReader类,3,14.1 解决方案,本章的解决方案演示了一个工资管理系统。该系统使用了两个表,第一个表为员工档案,包含员工的一般信息,如姓名、职务等信息;第二个表为工资发放,记录了每一位员工的每一次工资发放情况。 员工档案表和工资发放表由通用的域员工编号关联起来,该域是表员工档案的主键,是表工资发放的外键。运行本章的解决方案后,主窗体如下图所示:,14.2 自动创建到数据库的连接,在上一章中,介绍了怎样使用OleDbConnection类以编程方式创建应用程序和数据库的连接,其实,创建数据库连接的代码可以不由我们自己编写,而让VC#.NET自动生成,这时,就可以实现自动创建到数据库的连接。 要实现这一目的,我们只需在VC#.NET环境中,将工具箱中数据选项页的OleDbConnection控件拖放到窗体上,再使用数据链接属性对话框设置ConnectionString属性即可。VC#.NET将可以自动生成创建数据库连接的代码。,4,14.3 OleDbDataAdapter组件,在创建了到数据库的连接以后就可以访问和操作数据库了。在上一章中,曾经介绍过如何以编程方式创建和配置OleDbDataAdapter类的实例,本节将介绍如何通过工具箱中的OleDbDataAdapter控件及相关的向导来完成相同的任务。,5,14.4 类型化DataSet,到目前为止已经创建了OleDbConnection和OleDbDataAdapter控件实例,下面要做的是生成并且填充DataSet。DataSet可分为两种,一种是非类型化DataSet,另一种是类型化DataSet。在第13章中访问数据库时使用了非类型化DataSet,本章将介绍怎样使用类型化DataSet。,6,14.4.1 DataSet的两种类型,首先对DataSet的两种类型做一下对比,它们有如下的区别: 引用类型化DataSet中的表和域只需编写较少的代码 类型化DataSet通常比对应的非类型化DataSet执行得快。 当使用DataRow的索引器引用域及其数据时,数据返回为通用的object类型,这会导致运行时类型转换错误的发生,因为在编译时不知道域的数据类型。 在使用类型化DataSet时,智能感应技术可以显示出表名和域名。,7,14.5 表之间的关系,实际使用的数据库,通常都会包含多个表,这些表中的信息会以某种方式相关联。例如,表“员工档案”中的一行对应于一名员工,表“工资发放”包含所有员工的工资发放信息。表“员工档案”的“员工编号”域是该表的主键,表“工资发放”的“员工编号”域是该表的外键;可以创建一个DataSet,使用两个表的主键和外键把员工和相关的工资发放情况链接起来。 在本章解决方案的FormEmployeeSalory.cs窗体中包含了链接员工信息和相应的工资发放信息的用户界面;窗体FormStatistic.cs也使用了“员工档案”和“工资发放”两个表。,8,14.6 DataRelation,使用ADO.NET可以以两种方式来创建DataSet中表之间的关系:一是通过编程方式创建,二是使用VC#.NET提供的工具创建。两种方式的核心都是DataRelation对象,该对象用于定义DataSet中两个DataTable对象之间的一对多关系。在此关系中,一个表是父表(一),另一个表是子表(多)。 本节先通过编程方式创建DataRelation ,然后使用VC#.NET提供的工具创建该对象,以便更好地理解创建DataRelation的过程。,9,14.6.1 以编程方式创建DataRelation,每一个DataSet都有一个Relations集合,该集合中的每一个DataRelation对象都对应了一个DataSet中定义的关系。由于一个DataSet可以包含多个表,因此可以定义多个DataRelation对象来描述这些表之间复杂的关系。 DataRelation类具有下面的成员 ChildTable属性 ChildColumns属性 ParentTable属性 ParentColumns属性,10,14.7 数据绑定,数据绑定(Data binding)可以把控件实例与来自数据源的数据相关联。在本章中将把控件实例与DataSet绑定起来。但是,数据绑定也适用于其他对象,例如,可以把控件实例绑定到ArrayList中的元素。VC#.NET提供了两种类型的数据绑定,如下所示: 简单绑定(simple binding) 复杂绑定(complex binding),11,14.8 DataGrid控件,DataGrid控件以行和列的形式显示来自一个或者多个表的数据,由于DataGrid控件可以显示多个表的数据,因此属于复杂的绑定控件。DataGrid控件包含如下的成员: AllowSorting属性 CaptionVisible和CaptionText属性 DataMember属性 DataSource 属性 BeginEdit和EndEdit方法 CurrentCellChanged事件,12,14.9 DataReader,在前文中,曾以编程方式配置过OleDbDataAdapter,然后又使用OleDbDataAdapter控件并通过向导配置了SQL语句。DataReader的对象可以通过OleDbCommand类来创建。下面是两种形式的DataReader类: SqlDataReader类 该类做了性能优化,只用于SQL Server数据库。 OleDbDataReader类 该类是多种数据提供程序的通用类。,13,14.9.1 理解DataReader,由于使用DataReader并不能修改数据库中的数据,因而它的功能相对有限,但它的效率非常高,如果应用程序不需要修改数据库中的数据,只需要检索数据库,这时使用DataReader是很好的选择。 OleDbDataReader类包括的成员有: FieldCount属性 IsClosed方法 Close方法 GetFloat和GetDouble方法 GetBoolean方法 GetDateTime方法 GetChar和GetString方法 GetValue方法 Read方法,14,14.10 执行分级查询,ADO.NET还提供了另一个有用的功能,就是执行分级查询,只返回单

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论