ASP.NET程序设计实用技术教学课件王凤岭第8章节

上传人:E**** 文档编号:90573085 上传时间:2019-06-13 格式:PPT 页数:43 大小:190KB
返回 下载 相关 举报
ASP.NET程序设计实用技术教学课件王凤岭第8章节_第1页
第1页 / 共43页
ASP.NET程序设计实用技术教学课件王凤岭第8章节_第2页
第2页 / 共43页
ASP.NET程序设计实用技术教学课件王凤岭第8章节_第3页
第3页 / 共43页
ASP.NET程序设计实用技术教学课件王凤岭第8章节_第4页
第4页 / 共43页
ASP.NET程序设计实用技术教学课件王凤岭第8章节_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《ASP.NET程序设计实用技术教学课件王凤岭第8章节》由会员分享,可在线阅读,更多相关《ASP.NET程序设计实用技术教学课件王凤岭第8章节(43页珍藏版)》请在金锄头文库上搜索。

1、第8章 使用DataAdapter、DataSet对象和DataGrid控件读取数据,.NET的数据提供程序提供数据源和DataSet之间的连接,由于DataSet不依赖于数据源,所以这种数据访问模式也称为断开连接模式。在ADO.NET中,DataSet用于在断开式连接环境中存储从数据源中收集的数据。,8.1 DataSet对象,注意DataSet的特点: 内存中的数据库 DataSet是数据库数据在内存中的一个副本。 数据源独立性 DataSet是一种数据容器,它放置的是数据源的副本。 断开式连接 使用XML格式,8.1.1 DataSet和DataReader的比较,DataReader访

2、问数据库时将读取到的数据直接发送给用于显示数据的控件,此过程中没有任何数据留在内存当中。因此,访问数据的过程中需要与数据库系统保持连接状态。 而DataSet则是数据库的副本,控件访问数据时无需连接数据库,而只需读取内存中的数据。,以下情况更适合使用DataReader访问数据库,否则应当使用DataSet访问数据库。 1. 数据量较少,不需要数据缓存 2. 需要迅速地、一次性地访问数据,并且采用只读、只向前的方式。 那么,下列应用当中哪些更适合使用DataSet而哪些更适合使用DataReader? A.密码验证 B.显示某月份的销售报表 C.根据一件商品的条形码检索其单价,DataSet与

3、DataAdapter的区别,8.1.2 DataTable对象,如果说DataSet是内存中的数据库,那么DataTable则是该数据库中的数据表,DataRow和DataColumn就是这个表中的行和列。,DataTable中的数据并非必须来自数据源。如果有必要,开发人员完全可以通过编程方式自行创建DataSet对象并向其中添加表和数据,而不需要与数据库建立连接。,8.1.3 将数据填充到DataSet的步骤,将数据从一个数据源传送到DataSet的过程称之为“填充数据集”。填充数据集的基本方法可以分为以下几个步骤: (1)创建一个连接对象 (2)创建一个保存SQL语句的命令对象 (3)创

4、建一个DataSet对象 (4)在DataSet中创建一个或多个DataTable对象 (5)创建一个带有连接和命令对象的DataAdapter (6)使用DataAdapter的Fill()方法执行SQL命令并将获取的数据传送到DataSet的DataTable中。,填充数据集(1),创建一个数据库连接对象 Dim conn As SqlConnection(“”) 创建SQL命令对象 Dim cmd As New SqlCommand cmd.Connection = conn cmd.CommandText = “select * from t1” 创建DataSet对象 Dim ds

5、As New DataSet(“myds”) 创建DataTable对象,并且添加到DataSet Dim tb As New DataTable(“mytable”) ds.Tables.Add(tb),填充数据集(2),创建数据库适配器DataAdapter(并且使用cmd命令对象) Dim myAdapter As New SqlDataAdapter(cmd) 通过DataAdapter的Fill方法执行SQL命令,并且把SQL执行生成结果填充到DataSet中的DataTable表, DataAdapter 充当的角色是将数据库的数据复制给DataSet。 conn.Open() 打

6、开数据库连接 myAdapter.Fill(ds, “mytable”) 填充数据 conn.Close() 关闭数据库连接,填充数据集(3),为了将DataSet中存放的数据显示在相关控件(如DataGrid)当中,我们需将相关控件与DataSet绑定。 DataGrid1.DataSource = ds DataGrid1.DataBind(),将数据填充到DataSet的简化步骤(1),创建一个数据库连接对象 Dim conn As SqlConnection(“”) 创建DataSet对象 Dim ds As New DataSet() 创建数据库适配器DataAdapter Dim

7、myAdapter As New SqlDataAdapter(“SQL语句”, conn),将数据填充到DataSet的简化步骤(2),填充数据 conn.Open() 打开数据库连接 myAdapter.Fill(ds, “mytable”) 填充数据 conn.Close() 关闭数据库连接 绑定数据显示控件 DataGrid1.DataSource = ds DataGrid1.DataBind(),8.1.4 访问DataSet中数据表的行和列,访问DataSet中的数据表所涉及的对象 DataTable DataColumns DataRow,创建、访问数据的示例 Dim ds A

8、s DataSet 定义数据集DataSet的对象变量 Dim dt1, dt2 As DataTable 定义数据表DataTable的对象变量 Dim row As DataRow 定义数据项(行)的对象变量 创建一个DataSet数据集对象 ds = New DataSet 下一页, 创建一个DataTable数据表对象(表名:“商品”),并定义4列字段(商品编号,等) dt1 = New DataTable(“商品”) dt1.Columns.Add(“商品编号”, System.Type.GetType(“System.String”) dt1.Columns.Add(“商品名称”,

9、 System.Type.GetType(“System.String”) dt1.Columns.Add(“产地”, System.Type.GetType(“System.String”) dt1.Columns.Add(“颜色”, System.Type.GetType(“System.String”) 将上述定义好的DataTable数据表(dt1)添加到DataSet数据集(ds)当中 ds.Tables.Add(dt1) 下列语句将实现向数据表dt1添加一行记录 row = dt1.NewRow 通过DataTable.NewRow方法创建一个DataRow对象 row(0) =

10、“001” 定义第1个字段的值 row(1) = “洗衣机” 定义第2个字段的值 row(2) = “上海” 定义第3个字段的值 row(3) = “红色” 定义第4个字段的值 dt1.Rows.Add(row) 将上面定义好的一行数据添加到DataTable数据表(dt1), 建立另一个DataTable数据表对象(dt2),并且为数据表设置4个字段(列) dt2 = New DataTable(“订单”) dt2.Columns.Add(“订单编号”, System.Type.GetType(“System.String”) dt2.Columns.Add(“商品编号”, System.T

11、ype.GetType(“System.String”) dt2.Columns.Add(“订货时间”, System.Type.GetType(“System.DateTime”) dt2.Columns.Add(“商品数量”, System.Type.GetType(“System.Int32”) 将上述定义好的DataTable数据表(dt2)添加到DataSet数据集(ds)当中 ds.Tables.Add(dt2) 下列语句将实现向数据表dt2添加一行记录 row = dt2.NewRow 通过DataTable.NewRow方法创建一个DataRow对象 row(0) = “A1”

12、 定义第1个字段的值 row(1) = “001” 定义第2个字段的值 row(2) = #5/1/2005# 定义第3个字段的值 row(3) = 100 定义第4个字段的值 dt2.Rows.Add(row) 将上面定义好的一行数据添加到DataTable数据表(dt2), 将数据集里面的“商品”数据表绑定到显示数据的DataGrid控件 (假设已经将2个DataGrid控件拖放到本页面中) DataGrid1.DataSource = ds.Tables(“商品”) DataGrid1.DataBind() DataGrid2.DataSource = ds.Tables(“订单”) D

13、ataGrid2.DataBind(),DataRelation对象,ADO.NET关系机制主要用于确认表中的一个父列和另一个表中的子列。只要完成这一任务,就有可能选择父表(包含有父列的表)中的一行,并获得一个包含子表中所有行的集合,其中子表中子列的值与父列的值是完全匹配的。,创建一个DataRelation对象的过程如下: (1)为父列声明一个DataColumn对象,并指出哪个列作为父列: Dim parentCol As DataColumn = ds.Tables(“商品“).Columns(“商品编号“) (2)为子列声明一个DataColumn对象,并指出哪个列作为子列: Dim

14、childCol As DataColumn = ds.Tables(“订单“).Columns(“商品编号“) (3)创建一个DataRelation对象,并为关系、父列和子列指定名称: Dim relation As DataRelation = New DataRelation(“商品订单关系“, parentCol, childCol) (4)最后,向DataSet的Relation集合中添加一个新的DataRelation对象: ds.Relations.Add(relation),8.1.5 使用DataView对象创建数据视图,视图是查看数据库中数据的一种方法,它不是物理存在的表

15、,不占据物理存储空间。 数据视图是对单一数据表进行排序和过滤后的视图,在ADO.NET中数据视图是通过DataView对象出现的 可以根据一个DataTable创建许多DataView对象,并且每一个都可以提供不同内容的数据。,2.何种情况下使用DataView ?,在大多数情况下,如果只需要对数据进行一次排序和筛选,那么就可以使用SQL查询完成。 如果需要对数据进行多次排序,并从排过序的数据进行多次筛选,那么DataView是最佳的选择,3DataView是DataTable的子集,DataView可以被定制成表示DataTable对象中数据的子集。这个定制允许两个控件绑定到同一个DataT

16、able对象中,但每个控件显示不同版本的数据。,4创建自定义的DataView对象,Dim dt As DataTable = ds.Tables(“Students“) Dim dv As New DataView(dt) 或者: Dim dv As New DataView() dv.Table = ds.Tables(“Students“),5使用RowFilter属性对数据进行筛选,可以在显示数据之前使用RowFilter属性来筛选数据。 使用筛选表达式来设置RowFilter属性。 完整的筛选表达式必须要用双引号括住,并且任何文本内容都要用单引号括住。,数据筛选示例,dv.RowFilter = “City = 上海 “ dv.RowFilter = “City IN (上海, 北京, 南京) “ dv.RowFilter = “City LIKE *京 “ dv.RowFilte

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号