Transcript
Page 1: 《ASP.NET 程序设计 》

《《 ASP.NETASP.NET 程序设程序设计计》》

Page 2: 《ASP.NET 程序设计 》

第第 77 章 深入进行数据库编程章 深入进行数据库编程

Page 3: 《ASP.NET 程序设计 》

讲解提纲讲解提纲

• 7.1 DataGrid7.1 DataGrid 控件再探讨控件再探讨 • 7.2 7.2 使用使用 DataListDataList 控件存取数据库控件存取数据库 • 7.3 7.3 使用使用 RepeaterRepeater 控件存取数据库控件存取数据库 • 7.4 7.4 使用含有参数的使用含有参数的 SQLSQL 语句语句 • 7.5 7.5 对多个表进行操作对多个表进行操作 • 7.6 7.6 存取存取 SQL ServerSQL Server 数据库数据库 • 7.7 DataSet7.7 DataSet 对象再探讨对象再探讨 • 7.8 7.8 综合示例综合示例

Page 4: 《ASP.NET 程序设计 》

本章要点本章要点

• 使用使用 DataGridDataGrid 控件分页、排序、定制列、自定义控件分页、排序、定制列、自定义列列

• 使用使用 DataListDataList 控件显示和编辑数据控件显示和编辑数据 • 使用使用 RepeaterRepeater 控件显示数据控件显示数据 • 使用使用 SQLSQL参数查询语句参数查询语句 • 对多个表进行操作对多个表进行操作 • 连接连接 SQL ServerSQL Server 数据库的语句数据库的语句 • 手工建立手工建立 DataSetDataSet对象,利用对象,利用 DataSetDataSet对象对数据对象对数据库进行操作库进行操作

Page 5: 《ASP.NET 程序设计 》

7.1 7.1 DataGridDataGrid 控件再探讨控件再探讨

• 分页显示数据分页显示数据• 排序排序• 定制列定制列• 链接到详细页链接到详细页• 自定义列自定义列

Page 6: 《ASP.NET 程序设计 》

7.1.1 7.1.1 分页显示数据分页显示数据 • 在在 DataGridDataGrid 控件中添加如下属性:控件中添加如下属性:

– AllowPaging="True" 'AllowPaging="True" ' 表示允许分页显示表示允许分页显示– PageSize=“PageSize=“ 整数值” 整数值” '' 每页显示多少条记录每页显示多少条记录– OnPageIndexChanged=“OnPageIndexChanged=“ 事件过程” 事件过程” '' 切换到另一页时的事件切换到另一页时的事件

过程过程• 利用利用 PagerStylePagerStyle 属性设置分页导航栏的样式:属性设置分页导航栏的样式:

– PagerStyle-Mode=“ NextPrev | NumericPages” PagerStyle-Mode=“ NextPrev | NumericPages” – PagerStyle-HorizontalAlign="Left | Right |center" PagerStyle-HorizontalAlign="Left | Right |center" – PagerStyle-PrevPageText=“PagerStyle-PrevPageText=“ 字符串” 字符串” – PagerStyle-NextPageText=“PagerStyle-NextPageText=“ 字符串” 字符串”

• 在事件过程中只要令在事件过程中只要令 DataGrideDataGride 控件的控件的 CurrentPageIndexCurrentPageIndex属性为选定的页,然后重新绑定数据即可 属性为选定的页,然后重新绑定数据即可

Page 7: 《ASP.NET 程序设计 》

分页显示数据示例 分页显示数据示例

add.aspx

Page 8: 《ASP.NET 程序设计 》

7.1.2 7.1.2 对数据进行排序对数据进行排序

• 要进行排序,必须要在要进行排序,必须要在 DataGridDataGrid 控件中添加如下属性:控件中添加如下属性:– AllowSorting="True" 'AllowSorting="True" ' 表示允许排序表示允许排序– OnSortCommand= "OnSortCommand= " 事件过程事件过程 " '" ' 排序对应的事件过程排序对应的事件过程

• 排序的中心思想是当单击排序的中心思想是当单击 DataGridDataGrid 某一列的标题时,某一列的标题时,就将这一列的字段名称赋值给就将这一列的字段名称赋值给 DataSetDataSet 对象默认视图对象默认视图的的 SortSort 属性,然后就可以按该列排序了。属性,然后就可以按该列排序了。– DS.Tables("link").DefaultView.Sort=SortFieldDS.Tables("link").DefaultView.Sort=SortField– MyDataGrid.DataBind()MyDataGrid.DataBind()

Page 9: 《ASP.NET 程序设计 》

排序的具体方法排序的具体方法

• 首先在首先在 DataGridDataGrid 控件中添加相应属性。控件中添加相应属性。• 其次一个页面级变量其次一个页面级变量 SortFieldSortField ,,用来存放排序用来存放排序

字段。字段。• 启动页面时可以令启动页面时可以令 SortFieldSortField 为默认的排序字段为默认的排序字段

link_idlink_id ,,然后绑定数据。然后绑定数据。• 当客户选择了排序的字段后,就令当客户选择了排序的字段后,就令 SortFieldSortField 为为

新的排序字段,然后绑定数据。新的排序字段,然后绑定数据。

Page 10: 《ASP.NET 程序设计 》

对数据进行排序示例 对数据进行排序示例

7-2.aspx

Page 11: 《ASP.NET 程序设计 》

7.1.3 7.1.3 定制列定制列

• 要自己定制列,首先需要在要自己定制列,首先需要在 DataGridDataGrid 控件中添控件中添加如下属性加如下属性– AutoGenerateColumns="False" AutoGenerateColumns="False"

• 此外,还需要自己添加此外,还需要自己添加BoundColumnBoundColumn 、、 HyperLinkColumnHyperLinkColumn 列。列。

• 对于定制列,只要修改对于定制列,只要修改 DataGridDataGrid 控件就可以了,控件就可以了,基本上不用修改基本上不用修改

Page 12: 《ASP.NET 程序设计 》

定制列示例 定制列示例 7-3.aspx

Page 13: 《ASP.NET 程序设计 》

7.1.4 7.1.4 链接到详细页链接到详细页

• 如果一个数据表有很多字段,通常做法是只显示如果一个数据表有很多字段,通常做法是只显示若干重要字段,然后单击一个“详细”超链接,若干重要字段,然后单击一个“详细”超链接,就可以打开一个详细页面,在详细页面中显示所就可以打开一个详细页面,在详细页面中显示所有字段。有字段。

• 要达到以上目的,也只要利用要达到以上目的,也只要利用 7.1.37.1.3 节中讲到的节中讲到的HyperLinkColumnHyperLinkColumn 列,只不过链接到一个新的页列,只不过链接到一个新的页面即可。面即可。

Page 14: 《ASP.NET 程序设计 》

链接到详细页示例 链接到详细页示例 7-4.aspx

Page 15: 《ASP.NET 程序设计 》

详细页示例详细页示例

7-5.aspx

Page 16: 《ASP.NET 程序设计 》

7.1.5 7.1.5 自定义列自定义列 • 事实上,还可以利用事实上,还可以利用 TemplateColumnTemplateColumn 更加自更加自

由的定义每一列。由的定义每一列。– <<asp:TemplateColumn >asp:TemplateColumn >– <ItemTemplate><ItemTemplate>– 服务器控件服务器控件– </</ItemTemplate>ItemTemplate>– <EditItemTemplate><EditItemTemplate>– 服务器控件服务器控件– </</EditItemTemplate>EditItemTemplate>– </asp:TemplateColumn></asp:TemplateColumn>

Page 17: 《ASP.NET 程序设计 》

自定义列示例自定义列示例

• 分步讲解:分步讲解:– 第第 11 步:在步:在 DataGridDataGrid 控件中对“网站简介”和“网控件中对“网站简介”和“网

站评分”两列使用自定义列。站评分”两列使用自定义列。– 第第 22 步:在更新事件过程中获取文本框控件中和下拉步:在更新事件过程中获取文本框控件中和下拉

列表框控件中的值,并进行更新。列表框控件中的值,并进行更新。• 说明;说明;

– 其它部分同以前示例其它部分同以前示例

Page 18: 《ASP.NET 程序设计 》

第第 11 步:步: DataGridDataGrid 控件部分控件部分

7-6.aspx

Page 19: 《ASP.NET 程序设计 》

第第 22 步:更新事件过程部分步:更新事件过程部分7-6.aspx

Page 20: 《ASP.NET 程序设计 》

7.2 7.2 使用使用 DataListDataList 控件存取数据控件存取数据库库 • DataGridDataGrid 控件只能以表格形式显示数据,但是控件只能以表格形式显示数据,但是

DataListDataList 控件就可以以更自由的方式显示数据,比控件就可以以更自由的方式显示数据,比如可以在如可以在 11 行显示多条记录。行显示多条记录。

• 不过它的功能没有不过它的功能没有 DataGridDataGrid 控件强大,如不支持控件强大,如不支持分页和排序等。分页和排序等。

Page 21: 《ASP.NET 程序设计 》

7.2.1 7.2.1 DataListDataList 控件简介控件简介 • <<asp:DataList id="asp:DataList id=" 控件名称控件名称 " " • RepeatDirection="Vertical | HorizontalRepeatDirection="Vertical | Horizontal ,,表示垂直显示还是水平显表示垂直显示还是水平显

示示 " " • RepeatColumns="RepeatColumns=" 整数值,表示控件中显示的列数整数值,表示控件中显示的列数 " " • RepeatLayout="Table | FlowRepeatLayout="Table | Flow ,,表示是否以表格的形式显示数据表示是否以表格的形式显示数据 ""• OnEditCommand="OnEditCommand=" 单击编辑按钮时的事件名称单击编辑按钮时的事件名称 " " • OnUpdateCommand="OnUpdateCommand=" 单击更新按钮时的事件名称单击更新按钮时的事件名称 ""• OnCancelCommand="OnCancelCommand=" 单击取消按钮时的事件名称单击取消按钮时的事件名称 " " • OnDeleteCommand="OnDeleteCommand=" 单击删除按钮时的事件名称单击删除按钮时的事件名称 ""• OnItemCommand="OnItemCommand=" 单击其它按钮时的事件名称单击其它按钮时的事件名称 ""• DataKeyField="DataKeyField=" 关键字段,类似于数据库中的主键关键字段,类似于数据库中的主键 ""• runat="server" />runat="server" />• ………… 模板列模板列• </</asp:DataList>asp:DataList>

Page 22: 《ASP.NET 程序设计 》

DataListDataList 控件中的模板列控件中的模板列

• ItemTemplateItemTemplate

• AlternatingItemTemplateAlternatingItemTemplate

• SeparatorTemplateSeparatorTemplate

• SelectedItemTemplateSelectedItemTemplate

• EditItemTemplateEditItemTemplate

• HeaderTemplateHeaderTemplate

• FooterTemplateFooterTemplate

Page 23: 《ASP.NET 程序设计 》

7.2.2 7.2.2 查询记录查询记录

• 查询记录的步骤和查询记录的步骤和 DataGridDataGrid 控件几乎一致。控件几乎一致。• 区别只是声明控件的语法部分。区别只是声明控件的语法部分。

Page 24: 《ASP.NET 程序设计 》

查询记录示例查询记录示例

7-7.aspx

Page 25: 《ASP.NET 程序设计 》

7.2.3 7.2.3 选择记录选择记录

• 在在 DataListDataList 控件中可以使用控件中可以使用 SelectedItemTemplateSelectedItemTemplate模板列设定选中项的内容和样式。模板列设定选中项的内容和样式。

• 步骤:步骤:– 一般需要添加一个一般需要添加一个 LinkButtonLinkButton 控件;控件;– 并且添加并且添加 SelectedItemTemplateSelectedItemTemplate 模板;模板;– 并设置并设置 OnItemCommandOnItemCommand 属性对应的事件过程;属性对应的事件过程;– 在事件过程中设置在事件过程中设置 SelectedIndexSelectedIndex 属性为选中项,然后属性为选中项,然后

重新绑定数据即可。重新绑定数据即可。

Page 26: 《ASP.NET 程序设计 》

第第 11 步:步: DataListDataList 控件部分控件部分7-8.aspx

Page 27: 《ASP.NET 程序设计 》

第第 22 步:事件过程部分步:事件过程部分 7-8.aspx

Page 28: 《ASP.NET 程序设计 》

7.2.4 7.2.4 更新和删除记录更新和删除记录 • 利用利用 DataListDataList 控件也可以更新和删除记录,此时它控件也可以更新和删除记录,此时它

和和 DataGridDataGrid 控件的操作非常类似。控件的操作非常类似。– 它需要在它需要在 EditItemTemplateEditItemTemplate 列中自己定义编辑时的内容和列中自己定义编辑时的内容和

样式;样式;– 还 要 添 加还 要 添 加

OnEditCommandOnEditCommand 、、 OnUpdateCommandOnUpdateCommand 、、 OnCancelCommaOnCancelCommandnd 、、 OnDeleteCommandOnDeleteCommand 事件属性,分别对应单击编辑、更事件属性,分别对应单击编辑、更新、取消和删除按钮时的事件过程;新、取消和删除按钮时的事件过程;

– 同时还要利用同时还要利用 DataKeyFieldDataKeyField 属性设置关键字段。属性设置关键字段。• 在在 ItemTemplateItemTemplate 和和 EditItemTemplateEditItemTemplate 列中要分别添加列中要分别添加

几个几个 LinkButtonLinkButton 控件,当单击这些按钮时就会触发相控件,当单击这些按钮时就会触发相应的事件过程。应的事件过程。

Page 29: 《ASP.NET 程序设计 》

第第 11 步:步: DataListDataList 控件部分控件部分7-9.aspx

Page 30: 《ASP.NET 程序设计 》

第第 22 步:更新事件过程步:更新事件过程 7-9.aspx

Page 31: 《ASP.NET 程序设计 》

7.3 7.3 使用使用 RepeaterRepeater 控件存取数据控件存取数据库库 • RepeaterRepeater 控件也可以用来绑定数据库,它和控件也可以用来绑定数据库,它和

DataListDataList 控件非常相似,但是有几个区别:控件非常相似,但是有几个区别:– (( 11 )) DataListDataList 控件显示时会把每一条记录放在一个控件显示时会把每一条记录放在一个

表格单元内(可以在浏览器中查看源代码),而表格单元内(可以在浏览器中查看源代码),而RepeaterRepeater 控件就会严格按照用户的定义显示数据。控件就会严格按照用户的定义显示数据。

– (( 22 )) DataListDataList 控件支持更新和删除记录,而控件支持更新和删除记录,而RepeaterRepeater 控件则只支持查询记录。控件则只支持查询记录。

– (( 33)) DataListDataList 控件可以在控件可以在 11 行显示若干条记录,而行显示若干条记录,而RepeaterRepeater 控件控件 11 行只能显示行只能显示 11 条记录。条记录。

• 总的来说,总的来说, RepeaterRepeater 控件显示更自由,但是功控件显示更自由,但是功能最简单。能最简单。

Page 32: 《ASP.NET 程序设计 》

7.3.1 7.3.1 RepeaterRepeater 控件简介控件简介

• 语法如下:语法如下:– <<asp:Repeater id="asp:Repeater id=" 控件名称控件名称 " "

OnItemCommand="OnItemCommand=" 单击其中按钮时的事件名称单击其中按钮时的事件名称 " " runat="server" />runat="server" />

– 模板列模板列– </</asp:DataList>asp:DataList>

• 模板列模板列– ItemTemplateItemTemplate – AlternatingItemTemplateAlternatingItemTemplate – SeparatorTemplateSeparatorTemplate – HeaderTemplateHeaderTemplate – FooterTemplateFooterTemplate

Page 33: 《ASP.NET 程序设计 》

7.3.2 7.3.2 查询记录查询记录

• 数据的绑定和数据的绑定和 DataListDataList 类似类似• 关键是声明关键是声明 DataListDataList 控件的部分控件的部分

Page 34: 《ASP.NET 程序设计 》

查询记录示例查询记录示例 7-10.aspx

Page 35: 《ASP.NET 程序设计 》

7.3.3 7.3.3 选择记录选择记录

• RepeaterRepeater 控件不仅可以用来查询记录,其实也控件不仅可以用来查询记录,其实也可以其中添加可以其中添加 LinkButtonLinkButton 控件,单击该按钮就控件,单击该按钮就可以执行相应的事件过程,这一点和可以执行相应的事件过程,这一点和 7.2.37.2.3有些相有些相似。似。

• 首先在模板列中添加一个首先在模板列中添加一个 LinkButtonLinkButton 控件,然控件,然后要设置后要设置 OnItemCommandOnItemCommand 属性对应的事件过属性对应的事件过程。程。

• 当单击该按钮时,在事件过程中进行有关操作,当单击该按钮时,在事件过程中进行有关操作,然后重新绑定数据即可然后重新绑定数据即可

Page 36: 《ASP.NET 程序设计 》

选择记录示例—控件部分选择记录示例—控件部分7-11.aspx

Page 37: 《ASP.NET 程序设计 》

选择记录示例—选择过程部分选择记录示例—选择过程部分7-11.aspx

Page 38: 《ASP.NET 程序设计 》

7.4 7.4 使用含有参数的使用含有参数的 SQLSQL 语句语句

• 下面就是一个最简单的参数化下面就是一个最简单的参数化 SQLSQL 语句,其中包语句,其中包含了含了 11 个参数个参数 @@sitenamesitename 。:。:– "Select * From link Where sitename = "Select * From link Where sitename =

@sitename"@sitename"

• 当需要给该参数赋值时,可以使用当需要给该参数赋值时,可以使用 CommandCommand 对对象建立参数对象,然后再赋值。象建立参数对象,然后再赋值。– cmd.Parameters.Add(New cmd.Parameters.Add(New

OleDbParameter("@sitename", OleDbParameter("@sitename", OleDbType.Char,20))OleDbType.Char,20))

– cmd.Parameters("@sitename").Value="cmd.Parameters("@sitename").Value="搜狐搜狐 ""

Page 39: 《ASP.NET 程序设计 》

含有参数的含有参数的 SQLSQL 语句示例语句示例7-12.aspx

Page 40: 《ASP.NET 程序设计 》

7.5 7.5 对多个表进行操作对多个表进行操作

Page 41: 《ASP.NET 程序设计 》

7.5.1 7.5.1 组合查询组合查询

• 其实,只要使用组合查询的其实,只要使用组合查询的 SQLSQL 语句就可以了,语句就可以了,其它和其它和 6-5.6-5.aspxaspx 、、 6-6.aspx6-6.aspx都一样。都一样。

• 比如,现在要显示网站编号比如,现在要显示网站编号 IDID、、网站名称网站名称sitenamesitename、、年份年份 fyearfyear、、收入收入 incomeincome四个字四个字段,并且要按网站名称和年份排序,则必须将段,并且要按网站名称和年份排序,则必须将SelectSelect 语句写成如下形式:语句写成如下形式:– ""Select Select

link.link_id,link.sitename,finance.fyear,finance.ilink.link_id,link.sitename,finance.fyear,finance.income From link,finance Where ncome From link,finance Where link.link_id=finance.link_id Order By link.link_id=finance.link_id Order By link.sitename,finance.fyear"link.sitename,finance.fyear"

Page 42: 《ASP.NET 程序设计 》

7.5.2 7.5.2 对多个表进行更新和删除对多个表进行更新和删除操作操作 • 首先说明,首先说明, SelectSelect 语句可以使用多个表,但是语句可以使用多个表,但是

InsertInsert 、、 UpdateUpdate 和和 DeleteDelete 语句只能对语句只能对 11 个表个表进行操作。进行操作。

• 比如,当需要同时删除两个表中的数据的时候,比如,当需要同时删除两个表中的数据的时候,就需要大家手工一个表一个表进行就需要大家手工一个表一个表进行

Page 43: 《ASP.NET 程序设计 》

对多个表进行操作示例 对多个表进行操作示例 7-13.aspx

Page 44: 《ASP.NET 程序设计 》

7.6 7.6 存取存取 SQL ServerSQL Server 数据库数据库

• SQLSQL 数据库是微软推出的大型网络数据库,效率数据库是微软推出的大型网络数据库,效率更高,运行更稳定。更高,运行更稳定。

• 对于大型网站,还是建议采用对于大型网站,还是建议采用 SQLSQL 数据库。数据库。

Page 45: 《ASP.NET 程序设计 》

7.6.1 7.6.1 建立建立 SQL ServerSQL Server 数据库数据库

• 建立一个数据库建立一个数据库 wwwlinkwwwlink ,,然后再建立表然后再建立表 linklink ,,字段结构如图字段结构如图 7-157-15 所示。然后再为其添加用户所示。然后再为其添加用户testtest ,,密码是密码是 12341234 。。

Page 46: 《ASP.NET 程序设计 》

7.6.2 7.6.2 存取存取 SQL ServerSQL Server 数据库数据库

• 使用第一套类库,数据库连接字符串为使用第一套类库,数据库连接字符串为 ::– ""Provider=SqlOleDb.1;Data Source=localhost;initial Provider=SqlOleDb.1;Data Source=localhost;initial

Catalog=wwwlink;Uid=test;Pwd=1234"Catalog=wwwlink;Uid=test;Pwd=1234"

• 如果使用第二套类库,就需要在页面中首先导入相应类:如果使用第二套类库,就需要在页面中首先导入相应类:– <%@ <%@ Import Namespace="System.Data" %>Import Namespace="System.Data" %>– <%@ Import Namespace="System.Data.SqlClient" %><%@ Import Namespace="System.Data.SqlClient" %>

• 建立建立 ConnectionConnection 对象的数据库连接字符串修改为:对象的数据库连接字符串修改为:– ""Server=localhost;Database=wwwlink;Uid=test;Pwd=12Server=localhost;Database=wwwlink;Uid=test;Pwd=12

34“34“

• 其它部分和读取其它部分和读取 AccessAccess 数据库基本一致。数据库基本一致。• 特别注意:特别注意:

– 日期字段值两边不用日期字段值两边不用 ## 号,而改用引号。号,而改用引号。

Page 47: 《ASP.NET 程序设计 》

7.7 7.7 DataSetDataSet 对象再探讨对象再探讨

• DataSetDataSet 对象可以由数据库、对象可以由数据库、 XMLXML或手工建立,或手工建立,它是和数据源断开的。它是和数据源断开的。

• DataSetDataSet 对象其实就像内存中的数据库,具有表、对象其实就像内存中的数据库,具有表、行、列、主键、关系等。行、列、主键、关系等。

• 它需要借助它需要借助 DataAdapterDataAdapter 对象将更新反映到数对象将更新反映到数据源中。据源中。

Page 48: 《ASP.NET 程序设计 》

7.7.1 7.7.1 建立建立 DataSetDataSet 对象对象

• 填充填充 DataSetDataSet 对象的几种方法:对象的几种方法:– 由数据库中填充由数据库中填充– 从从 XMLXML 文件中填充文件中填充 – 完全手工填充完全手工填充

Page 49: 《ASP.NET 程序设计 》

手工建立手工建立 DataSetDataSet 对象示例对象示例(( 11 ) )

7-15.aspx

Page 50: 《ASP.NET 程序设计 》

手工建立手工建立 DataSetDataSet 对象示例对象示例(( 22 ) )

7-15.aspx

Page 51: 《ASP.NET 程序设计 》

7.7.2 7.7.2 对对 DataSetDataSet 对象的操作对象的操作 • 删除列的一般方法是:删除列的一般方法是:

– dt.Columns.Remove("submit_date")dt.Columns.Remove("submit_date")

• 删除行的一般方法首先定位到该行,然后使用删除行的一般方法首先定位到该行,然后使用 deletedelete 方法:方法:– dr= dt.Rows(dr= dt.Rows( 行编号行编号 ) ) – dr.Delete dr.Delete

• 修改值的一般方法首先定位到该行,然后对指定列赋值:修改值的一般方法首先定位到该行,然后对指定列赋值:– dr= dt.Rows(dr= dt.Rows( 行编号行编号 ))– dr("dr(" 列名称列名称 ")=")=值值

• 返回表中行的数目的方法如下:返回表中行的数目的方法如下:– number=dt.Rows.Countnumber=dt.Rows.Count

• 返回表中列的数目的方法如下:返回表中列的数目的方法如下:– number=dt.Columns.Countnumber=dt.Columns.Count

• 对列进行排序的一般方法如下:对列进行排序的一般方法如下:– ds.Tables(ds.Tables( 表编号表编号 ).).DeaultView.Sort="DeaultView.Sort=" 列名称 列名称 DESC"DESC"

• 对行进行筛选的一般方法如下:对行进行筛选的一般方法如下:– ds.Tables(ds.Tables( 表编号表编号 ).).DeaultView.RowFilter="DeaultView.RowFilter=" 条件,如条件,如 grade>3"grade>3"

Page 52: 《ASP.NET 程序设计 》

对对 DataSetDataSet 对象的操作示例对象的操作示例7-16.aspx

Page 53: 《ASP.NET 程序设计 》

7.7.3 7.7.3 把把 DataSetDataSet 对象中的更新写对象中的更新写回到数据库回到数据库 • DataSetDataSet 对象是和数据库断开的,如果要将改变更对象是和数据库断开的,如果要将改变更

新到数据库中,就需要借助新到数据库中,就需要借助 DataAdapterDataAdapter 对象。对象。

Page 54: 《ASP.NET 程序设计 》

把把 DataSetDataSet 对象中的更新写回到对象中的更新写回到数据库示例数据库示例• 用用 SessionSession 保存保存 DatasetDataset 对象:对象:

– 第第 11 次打开时读取原始数据,并将次打开时读取原始数据,并将 DataSetDataSet 对象保存对象保存到到 SessionSession 中。中。

– 当单击编辑和删除时,首先从当单击编辑和删除时,首先从 SessionSession 中读取中读取DataSetDataSet 对象,然后对其进行操作,随后再保存到对象,然后对其进行操作,随后再保存到SessionSession 中中

– 最后如果要保存修改结果,就利用最后如果要保存修改结果,就利用 DataAdapterDataAdapter 对象,对象,将修改反应到数据库中,将修改反应到数据库中,

– 如果放弃修改,就重新从数据库中读取原有数据。如果放弃修改,就重新从数据库中读取原有数据。

Page 55: 《ASP.NET 程序设计 》

初始化部分初始化部分7-17.aspx

Page 56: 《ASP.NET 程序设计 》

更新部分更新部分7-17.aspx

Page 57: 《ASP.NET 程序设计 》

删除部分删除部分7-17.aspx

Page 58: 《ASP.NET 程序设计 》

保存修改部分保存修改部分7-17.aspx

Page 59: 《ASP.NET 程序设计 》

7.8 7.8 综合示例综合示例

• 该程序就是在第该程序就是在第 66章中的综合示例中逐项加入分页、章中的综合示例中逐项加入分页、排序、定制列、链接到详细页等功能。大家也可以排序、定制列、链接到详细页等功能。大家也可以尝试自己逐项加入。尝试自己逐项加入。

• 这里边有两个小窍门,一是利用这里边有两个小窍门,一是利用 LabelLabel 控件控件mySortFieldmySortField 存放选定的排序字段,二是用存放选定的排序字段,二是用TextBoxTextBox 控件控件 keywordkeyword 存放要搜索的网站名称关存放要搜索的网站名称关键字。当在键字。当在 BindDataBindData 过程中建立过程中建立 DataSetDataSet 对象对象时,就可以根据这两项设置显示内容和显示顺序。时,就可以根据这两项设置显示内容和显示顺序。

• 另外要注意更新过程中的多个参数。另外要注意更新过程中的多个参数。

Page 60: 《ASP.NET 程序设计 》

再 见