第 5 章 数据库的访问和管理( 4 )

34
第 5 第 第第第第第第第第第4

Upload: olathe

Post on 15-Jan-2016

95 views

Category:

Documents


8 download

DESCRIPTION

第 5 章 数据库的访问和管理( 4 ). 1. 2. 内容回顾. 使用 Command 对象 实现模糊查询 ADO.NET 事务处理 DataReader 对象 DataAdapter 对象. 内容提要. DataSet 对象 DataView 对象 Repeater 数据控件 DataList 数据控件 DataGrid 数据控件 网上购物数据库设计. DataSet 对象. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 5 章 数据库的访问和管理( 4 )

第 5 章 数据库的访问和管理( 4 )

Page 2: 第 5 章 数据库的访问和管理( 4 )

内容回顾 使用 Command 对象 实现模糊查询 ADO.NET 事务处理 DataReader 对象 DataAdapter 对象

Page 3: 第 5 章 数据库的访问和管理( 4 )

内容提要 DataSet 对象 DataView 对象 Repeater 数据控件 DataList 数据控件 DataGrid 数据控件 网上购物数据库设计

Page 4: 第 5 章 数据库的访问和管理( 4 )

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 )

自动生成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 )

自动生成 DataSet 对象 程序中,首先创建 1 个

DataSet 对象,然后创建 1个 DataTable 对象,利用循环初始化 DataTable 对象

最后将 DataTable 对象填充到 DataSet 对象中,通过和DataGrid 数据控件绑定将数据输出到浏览器上。

Page 7: 第 5 章 数据库的访问和管理( 4 )

操作 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 )

动态修改 DataSet 对象 程序从数据库中读取了 1 个数

据库表,将其填充到 DataSet对象中,然后新创建一行

将其添加到 DataSet 对象中。“ OleDbCommandBuilder cb = new OleDbCommandBuilder(da)” 的功能是对新加的数据行进行转换。

Page 9: 第 5 章 数据库的访问和管理( 4 )

DataView 对象 DataView 对象定义了 DataTable 的数据查

看方式。

数据默认的查看方式是将数据以表格的形式排列,且数据排列的顺序遵循从数据库表中取出数据时排列的顺序

可以通过 DataView 对象使数据按照某些规则进行显示。

Page 10: 第 5 章 数据库的访问和管理( 4 )

使用 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 )

DataView 对象 通过 DataView 对象的“ Find()” 方法

可以其数据进行查找

如果找到了,该方法将返回所在行的索引,可以将查找到的数据输出。

Page 12: 第 5 章 数据库的访问和管理( 4 )

程序名称: 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 )

数据控件 数据控件属于 Web 服务器端控件,数据

控件包括三个控件: Repeater 控件, DataList 控件和

DataGrid 控件。 其中最常用的数据控件是 DataGrid 控件,

也是功能最强大的数据控件。

Page 14: 第 5 章 数据库的访问和管理( 4 )

Repeater 数据控件 Repeater 控件的主要功能是以更自由的方式来控制

数据,用非表格的形式来展现数据。 Repeater 控件最关键的部分是摸板,允许用户定义 5 种摸板:

ItemTemplate ,数据摸板,这是 Repeater 控件必须的 AlternatingItemTemplate ,隔行数据模板,可选参数 SeparatorTemplate ,分割线模板,可选参数 HeaderTemplate ,抬头模板,可选参数 FooterTemplate ,结尾模板,可选参数

Page 15: 第 5 章 数据库的访问和管理( 4 )

使用 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 )

使用 Repeater 控件的其他模板 除了可以使用“ ItemTemplate” 模板,

还可以使用头摸板、尾摸板以及隔行显示模板。

一般隔行显示模板用来定义不同的显示样式

Page 17: 第 5 章 数据库的访问和管理( 4 )

程序名称: 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 )

Repeater 控件 程序定义了头部显示的

信息和尾部显示的信息

并定义奇数行显示成红色,偶数行显示成蓝色。

Page 19: 第 5 章 数据库的访问和管理( 4 )

DataList 数据控件 DataList 数据控件在 Repeater 数据控

件基础上进行了扩展,除了含有Repeater 的功能外,还可以设置单行笔数等等。

DataList 控件和 Repeater 控件数据输出的格式都取决于样板的定义,不同点是: DataList 在浏览器中会以表格的形式输出。

Page 20: 第 5 章 数据库的访问和管理( 4 )

程序名称: 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 )

DataGrid 数据控件 DataGrid 数据控件是这 3 个数据控件中最强

大的一个。使用 DataGrid 控件可以自动显示表的内容。利用 DataReader 对象或者DataSet 对象和 DataGrid 控件进行绑定,就可以进行数据输出。

在以往的 Web技术中,比如 ASP或者 JSP ,实现数据的分页显示,需要编写很长的代码才能实现。在 ASP.NET 中利用 DataGrid 控件,只要做一下设置,就可以实现分页。

Page 22: 第 5 章 数据库的访问和管理( 4 )

使用 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 )

使用 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 )

使用 DataGrid 控件实现分页 与分页相关的属性如下:

AllowPaging :是指其值设为“ True” 时才允许翻页,所以其具有分页浏览的功能;

PageSize :表示一页显示的记录行数,默认是 10 条记录;

PagerStyle-HorizontanAlign :指分页显示的定位,默认是 Left 。

Page 25: 第 5 章 数据库的访问和管理( 4 )

使用 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 )

实现分页的数字显示 程序名称: 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 )

实现分页的数字显示<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 )

实现分页的数字显示

Page 29: 第 5 章 数据库的访问和管理( 4 )

实验:网上购物数据库设计 实验目标:

了解:数据库的基本概念。 熟悉:数据库表的设计的方法。 掌握:设计网上购物系统的数据库。

Page 30: 第 5 章 数据库的访问和管理( 4 )

步骤 1 :建立数据库表 建立数据库表 Category 格式

Page 31: 第 5 章 数据库的访问和管理( 4 )

建立数据表 Products 格式

Page 32: 第 5 章 数据库的访问和管理( 4 )

利用 DataGrid 控件动态添加数据

Page 33: 第 5 章 数据库的访问和管理( 4 )

使用 DataGrid 控件动态操作数据

Page 34: 第 5 章 数据库的访问和管理( 4 )

本章总结 DataSet 对象 DataView 对象 Repeater 数据控件 DataList 数据控件 DataGrid 数据控件 网上购物数据库设计