第 5 章 数据库的访问和管理( 4 )
DESCRIPTION
第 5 章 数据库的访问和管理( 4 ). 1. 2. 内容回顾. 使用 Command 对象 实现模糊查询 ADO.NET 事务处理 DataReader 对象 DataAdapter 对象. 内容提要. DataSet 对象 DataView 对象 Repeater 数据控件 DataList 数据控件 DataGrid 数据控件 网上购物数据库设计. DataSet 对象. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/1.jpg)
第 5 章 数据库的访问和管理( 4 )
![Page 2: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/2.jpg)
内容回顾 使用 Command 对象 实现模糊查询 ADO.NET 事务处理 DataReader 对象 DataAdapter 对象
![Page 3: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/3.jpg)
内容提要 DataSet 对象 DataView 对象 Repeater 数据控件 DataList 数据控件 DataGrid 数据控件 网上购物数据库设计
![Page 4: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/4.jpg)
DataSet 对象 DataSet 封装在命名空间“ Syste.Data” 中。 DataSet 中可以
包含任意数量的 DataTable (数据表),且每个 DataTable 对应一个数据库中的数据表和视图。
通过 DataAdapter 的 Fill 方法,将表内容填充到 DataSet 对象中,而且可以填充多个表。利用别名来区分。
比如“ da.Fill(ds,"grade1");” 的功能是将 da 对象中的数据填充到 ds 对象中,并起别名“ grade1”
DataSet 对象使用 XML 格式来存储数据, DataSet 可以脱离数据源。可以利用程序创建 DataSet 对象,并填充内部的数据,不从数据源读取数据。
![Page 5: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/5.jpg)
自动生成DataSet对象
程序名称: 5-13.aspx<%@ Page Language="VB" %><%@ Import namespace="System.Data" %><script runat="server">Sub Page_Load(Sender As Object, e As EventArgs)
dim myds as DataSet=new DataSet()dim mydt as DataTable=new DataTable("Squares")dim mydc as DataColumn=new DataColumn()
dim mydr as DataRow mydc.DataType=System.Type.GetType("System.Int32") mydc.ColumnName=" 数字 "
mydt.Columns.Add(mydc) mydc=new DataColumn() mydc.DataType=System.Type.GetType("System.Int32") mydc.ColumnName=" 平方 "
mydt.Columns.Add(mydc)myds.Tables.Add(mydt)dim i as integerfor i = 0 to 10
mydr = mydt.NewRow()mydr(" 数字 ") = imydr(" 平方 ") = i * imydt.Rows.Add(mydr)
nextdg.DataSource = myds.Tables("Squares").DefaultViewdg.DataBind()
End Sub</script><asp:DataGrid id="dg" runat= "server"/>
![Page 6: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/6.jpg)
自动生成 DataSet 对象 程序中,首先创建 1 个
DataSet 对象,然后创建 1个 DataTable 对象,利用循环初始化 DataTable 对象
最后将 DataTable 对象填充到 DataSet 对象中,通过和DataGrid 数据控件绑定将数据输出到浏览器上。
![Page 7: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/7.jpg)
操作 DataSet 对象 程序名称: 5-14.aspx<%@ Page Language="VB" %><%@Import Namespace="System.Data"%><%@Import Namespace="System.Data.OleDb"%><Script runat="server">Sub Page_Load(Sender As Object, e As EventArgs)
dim Conn as new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+"Data Source="+Server.MapPath("person.mdb"))
Conn.Open()dim strSQL="select * from grade;"dim da as new OleDbDataAdapter(strSQL, Conn)dim ds as new DataSet()da.Fill(ds,"grade")dim dt as DataTable=new DataTable()dt = ds.Tables("grade")dim row as DataRowrow = dt.NewRow()row(" 学号 ")= "2005"row(" 姓名 ")= " 薛为民 "row(" 语文 ") = 96
row(" 数学 ") = 98 row(" 英语 ") = 100
dt.Rows.Add(row)dim cb as OleDbCommandBuilder = new OleDbCommandBuilder(da)da.Update(ds,"grade")dg.DataSource = ds.Tables("grade").DefaultViewdg.DataBind()Conn.Close()
End Sub</script><ASP:DataGrid id="dg" runat="server"/>
![Page 8: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/8.jpg)
动态修改 DataSet 对象 程序从数据库中读取了 1 个数
据库表,将其填充到 DataSet对象中,然后新创建一行
将其添加到 DataSet 对象中。“ OleDbCommandBuilder cb = new OleDbCommandBuilder(da)” 的功能是对新加的数据行进行转换。
![Page 9: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/9.jpg)
DataView 对象 DataView 对象定义了 DataTable 的数据查
看方式。
数据默认的查看方式是将数据以表格的形式排列,且数据排列的顺序遵循从数据库表中取出数据时排列的顺序
可以通过 DataView 对象使数据按照某些规则进行显示。
![Page 10: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/10.jpg)
使用 DataView 对象 程序名称: 5-15.aspx<%@ Page Language="VB" %><%@Import Namespace="System.Data"%><%@Import Namespace="System.Data.OleDb"%><Script runat="server">Sub Page_Load(Sender As Object, e As EventArgs) dim Conn as new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+"Data Source="+Server.MapPath("person.mdb")) dim strSQL = "select * from grade" dim Comm as new OleDbCommand(strSQL,Conn) dim da as new OleDbDataAdapter() da.SelectCommand = Comm Conn.Open() dim ds as new DataSet da.Fill(ds,"grade") dim dv as DataView = new DataView(ds.Tables("grade")) dv.RowFilter = " 数学 > 60" dv.Sort = " 学号 desc, 数学 DESC" Response.Write(" 满足条件的记录有: " & dv.Count & " 条 ") dg.DataSource = dv dg.DataBind() Conn.Close()End Sub</script><ASP:DataGrid id="dg" runat="server"/>
![Page 11: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/11.jpg)
DataView 对象 通过 DataView 对象的“ Find()” 方法
可以其数据进行查找
如果找到了,该方法将返回所在行的索引,可以将查找到的数据输出。
![Page 12: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/12.jpg)
程序名称: 5-16.aspx<%@ Page Language="VB" %><%@Import Namespace="System.Data"%><%@Import Namespace="System.Data.OleDb"%><Script runat="server">Sub Page_Load(Sender As Object, e As EventArgs) dim Conn as OleDbConnection
Conn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+"Data Source="+Server.MapPath("person.mdb"))
dim strSQL as String= "select * from grade"dim Comm as OleDbCommand = new OleDbCommand(strSQL,Conn)dim da as OleDbDataAdapter= new OleDbDataAdapter()da.SelectCommand = CommConn.Open()dim ds as DataSet= new DataSet()da.Fill(ds,"grade")dim dv as DataView=new DataView(ds.Tables("grade"),""," 姓名 ", DataViewRowState.CurrentRows)dim rowIndex as Integer
rowIndex= dv.Find(" 薛为民 ")If rowIndex = -1 Then
Response.Write(" 没有找到! ") else
Response.Write(dv(rowIndex)(" 姓名 ") &" : "&dv(rowIndex)(" 数学 "))End Ifdg.DataBind()Conn.Close()
End Sub</script><ASP:DataGrid id="dg" runat="server"/>
![Page 13: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/13.jpg)
数据控件 数据控件属于 Web 服务器端控件,数据
控件包括三个控件: Repeater 控件, DataList 控件和
DataGrid 控件。 其中最常用的数据控件是 DataGrid 控件,
也是功能最强大的数据控件。
![Page 14: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/14.jpg)
Repeater 数据控件 Repeater 控件的主要功能是以更自由的方式来控制
数据,用非表格的形式来展现数据。 Repeater 控件最关键的部分是摸板,允许用户定义 5 种摸板:
ItemTemplate ,数据摸板,这是 Repeater 控件必须的 AlternatingItemTemplate ,隔行数据模板,可选参数 SeparatorTemplate ,分割线模板,可选参数 HeaderTemplate ,抬头模板,可选参数 FooterTemplate ,结尾模板,可选参数
![Page 15: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/15.jpg)
使用 Repeater 控件 <%@ Page Language="VB" %><%@Import Namespace="System.Data"%><%@Import Namespace="System.Data.OleDb"%><Form runat="server"><asp:Repeater id="rep" runat="server"> <ItemTemplate> <B><%#DataBinder.Eval(Container.DataItem, " 姓名 ") %> (<%#DataBinder.Eval(Container.DataItem, " 学号 ") %>)</B> 数学成绩: <%#DataBinder.Eval(Container.DataItem, " 数学 ") %><BR> </ItemTemplate> </asp:Repeater></Form><script runat="server">Sub Page_Load(Sender As Object, e As EventArgs)
dim Provider,DataBase,ConnStr,SQL as StringProvider = "Microsoft.Jet.OLEDB.4.0;"DataBase = Server.MapPath("person.mdb")ConnStr = "Provider=" + Provider + "Data Source=" + DataBasedim da as OleDbDataAdapterda = new OleDbDataAdapter("Select * From grade",ConnStr)dim ds as DataSet=new DataSet()da.Fill(ds,"grade")rep.DataSource=ds.Tables("grade").DefaultViewrep.DataBind()
End Sub</script>
![Page 16: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/16.jpg)
使用 Repeater 控件的其他模板 除了可以使用“ ItemTemplate” 模板,
还可以使用头摸板、尾摸板以及隔行显示模板。
一般隔行显示模板用来定义不同的显示样式
![Page 17: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/17.jpg)
程序名称: 5-18.aspx<%@ Page Language="VB" %><%@Import Namespace="System.Data"%><%@Import Namespace="System.Data.OleDb"%><Form runat="server"><asp:Repeater id="rep" runat="server">
<HeaderTemplate>首届毕业生成绩表 <p>
</HeaderTemplate><ItemTemplate>
<Font color="red"><B><%#DataBinder.Eval(Container.DataItem, " 姓名 ")%> (<%#DataBinder.Eval(Container.DataItem, " 学号 ") %>)</B> 数学成绩: <%#DataBinder.Eval(Container.DataItem, " 数学 ") %><BR> </Font>
</ItemTemplate><AlternatingItemTemplate>
<Font color="blue"><B><%#DataBinder.Eval(Container.DataItem, " 姓名 ")%> (<%#DataBinder.Eval(Container.DataItem, " 学号 ") %>)</B> 数学成绩: <%#DataBinder.Eval(Container.DataItem, " 数学 ") %><BR> </Font>
</AlternatingItemTemplate><SeparatorTemplate>
<HR WIDTH="80%" ALIGN="LEFT"></SeparatorTemplate><FooterTemplate>
到此结束!</FooterTemplate>
</asp:Repeater> </Form>
![Page 18: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/18.jpg)
Repeater 控件 程序定义了头部显示的
信息和尾部显示的信息
并定义奇数行显示成红色,偶数行显示成蓝色。
![Page 19: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/19.jpg)
DataList 数据控件 DataList 数据控件在 Repeater 数据控
件基础上进行了扩展,除了含有Repeater 的功能外,还可以设置单行笔数等等。
DataList 控件和 Repeater 控件数据输出的格式都取决于样板的定义,不同点是: DataList 在浏览器中会以表格的形式输出。
![Page 20: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/20.jpg)
程序名称: 5-19.aspx<%@ Page Language="vb"%><%@Import Namespace="System.Data"%><%@Import Namespace="System.Data.OleDb"%><Form runat="server"><asp:DataList id="dl" runat="server" RepeatDirection="Horizontal" RepeatColumns="3"> <ItemTemplate> <B><%#DataBinder.Eval(Container.DataItem, " 姓名 ") %> (<%#DataBinder.Eval(Container.DataItem, " 学号 ") %>)</B> 数学成绩: <%#DataBinder.Eval(Container.DataItem, " 数学 ") %>, </ItemTemplate> </asp:DataList> </Form> <script runat="server">
Sub Page_Load(Sender As Object, e As EventArgs)dim Provider,DataBase,ConnStr,SQL as stringProvider = "Microsoft.Jet.OLEDB.4.0;"DataBase = Server.MapPath("person.mdb")ConnStr = "Provider=" + Provider + "Data Source=" + DataBasedim Comm as new OleDbDataAdapter("Select * From grade",ConnStr)dim ds as new DataSet()Comm.Fill(ds,"grade")dl.DataSource = ds.Tables("grade").DefaultViewdl.DataBind()
End Sub </script>
![Page 21: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/21.jpg)
DataGrid 数据控件 DataGrid 数据控件是这 3 个数据控件中最强
大的一个。使用 DataGrid 控件可以自动显示表的内容。利用 DataReader 对象或者DataSet 对象和 DataGrid 控件进行绑定,就可以进行数据输出。
在以往的 Web技术中,比如 ASP或者 JSP ,实现数据的分页显示,需要编写很长的代码才能实现。在 ASP.NET 中利用 DataGrid 控件,只要做一下设置,就可以实现分页。
![Page 22: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/22.jpg)
使用 DataGrid 控件实现分页 程序名称: 5-20.aspx<%@Import Namespace="System.Data"%><%@Import Namespace="System.Data.OleDb"%><script Language="VB" runat="server">Sub Page_Load(Sender As Object, e As EventArgs)
dim Provider,DataBase,ConnStr,SQL as StringProvider = "Microsoft.Jet.OLEDB.4.0;"DataBase = Server.MapPath("person.mdb")ConnStr = "Provider=" & Provider & "Data Source=" + DataBasedim da as OleDbDataAdapterda = new OleDbDataAdapter("Select * From grade",ConnStr)dim ds as DataSet = new DataSet()da.Fill(ds,"grade")DataGrid1.DataSource = ds.Tables("grade").DefaultViewDataGrid1.DataBind()
End Sub </script><html><body><form runat="server"><asp:DataGrid id="DataGrid1" runat="server"
![Page 23: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/23.jpg)
使用 DataGrid 控件实现分页<asp:DataGrid id="DataGrid1" runat="server" BorderColor="Black" BorderEidth="1" GridLines="Both" CellPadding="3" CellSpacing="0" Font-Name="Verdana" Font-Size="8pt" Headerstyle-BackColor="#AAAADD" AlternatingItemStyle-BackColor="#eeeeee" AllowPaging="True" PageSize="5" PagerStyle-HorizontanAlign="Right"/> </Form> </body> </html>
![Page 24: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/24.jpg)
使用 DataGrid 控件实现分页 与分页相关的属性如下:
AllowPaging :是指其值设为“ True” 时才允许翻页,所以其具有分页浏览的功能;
PageSize :表示一页显示的记录行数,默认是 10 条记录;
PagerStyle-HorizontanAlign :指分页显示的定位,默认是 Left 。
![Page 25: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/25.jpg)
使用 DataGrid 控件实现分页 在上面的例子中,可以看到对于分页的控制,但是只是一个普通、简单的分页,可以根据自己的需要做一些改进。如果需要将“ <”与“ >”符号换成“上一页”与“下一页”,只要加入两条属性即可。
PagerStyle-NextPageText=“下一页” PagerStyle-PrevPageText=“ 上一页”
如果希望页码用 1 、 2 、 3 这些数字标记,再设置属性: PagerStyle-Mode=”NumericPages”
如果想显示一共多少页,而且显示当前是地几页,这时需要添加如下代码:
显示当前页代码: <font color=red> <% =Datagrid1.CurrentPageIndex+1%>
</font> <br> 显示总页数代码:
<font color=red> <% =Datagrid1.PageCount% > </font> <br>
![Page 26: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/26.jpg)
实现分页的数字显示 程序名称: 5-21.aspx<%@Import Namespace="System.Data"%><%@Import Namespace="System.Data.OleDb"%><script Language="VB" runat="server">Sub Page_Load(Sender As Object, e As EventArgs)
dim Provider,DataBase,ConnStr,SQL as StringProvider = "Microsoft.Jet.OLEDB.4.0;"DataBase = Server.MapPath("person.mdb")ConnStr = "Provider=" & Provider & "Data Source=" + DataBasedim da as OleDbDataAdapterda = new OleDbDataAdapter("Select * From grade",ConnStr)dim ds as DataSet = new DataSet()da.Fill(ds,"grade")DataGrid1.DataSource = ds.Tables("grade").DefaultViewDataGrid1.DataBind()
End Sub </script>
![Page 27: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/27.jpg)
实现分页的数字显示<asp:DataGrid id="DataGrid1" runat="server" BorderColor="Black" BorderEidth="1" GridLines="Both" CellPadding="3" CellSpacing="0" Font-Name="Verdana" Font-Size="8pt" Headerstyle-BackColor="#AAAADD" AlternatingItemStyle-BackColor="#eeeeee" AllowPaging="True" PageSize="5" PagerStyle-HorizontanAlign="Right" PagerStyle-Mode="NumericPages" /> </Form> </body></html>
![Page 28: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/28.jpg)
实现分页的数字显示
![Page 29: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/29.jpg)
实验:网上购物数据库设计 实验目标:
了解:数据库的基本概念。 熟悉:数据库表的设计的方法。 掌握:设计网上购物系统的数据库。
![Page 30: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/30.jpg)
步骤 1 :建立数据库表 建立数据库表 Category 格式
![Page 31: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/31.jpg)
建立数据表 Products 格式
![Page 32: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/32.jpg)
利用 DataGrid 控件动态添加数据
![Page 33: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/33.jpg)
使用 DataGrid 控件动态操作数据
![Page 34: 第 5 章 数据库的访问和管理( 4 )](https://reader033.vdocuments.site/reader033/viewer/2022061419/56814937550346895db67a82/html5/thumbnails/34.jpg)
本章总结 DataSet 对象 DataView 对象 Repeater 数据控件 DataList 数据控件 DataGrid 数据控件 网上购物数据库设计