扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在本页阅读全文(共4页)
三、 DataSet的使用
在第一章我们介绍了数据连接、执行查询等内容,第二章我们介绍了DataSet的方方面面,这一章我们将具体使用DataSet。
DataSet <-> Data Source
DataSet和Data Source通过DataAdapter进行联系,当DataSet取得数据库数据以后,就和数据库断开连接,针对数据作的所有数据修改在没有提交以前都在DataSet里面保存。
数据修改
我们将通过一个小的举例来说明数据怎样被修改和提交。
这是数据结构(Access设计)
Field Name | Type | FName | LName | ID |
FName | Text | Philip | Quinn | 1 |
LName | Text | Joesph | Payne | 2 |
ID | AutoNumber | Douglas | Adams | 3 |
Michael | Okuda | 4 |
举例一:
我们将一段一段的看程序代码:
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.Oledb" %>
<script language="VB" runat="server">
Sub Page_Load(sender as object, e as eventargs)
以上代码导入NameSpace同时说明编程语言为VB;
Dim objConn as New OleDBConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=e:\sff\site\db\test.mdb")
objConn.Open()
Dim ds as Dataset = New DataSet()
Dim objAdapter as New OleDbDataAdapter("SELECT * FROM users", objConn)
Dim objCmdBld as New OleDbCommandBuilder(objAdapter)
objAdapter.Fill(ds, "users")
以上代码建立了Connection、DataAdapter和CommandBuilder,并且填充了DataSet。我们必须注意以下几点:
一、 DataAdapter是数据和DataSet之间的桥梁;
二、 CommandBuilder建SQL语句来执行;
Dim drow as DataRow
以上语句声明一个DataRow;
drow = ds.Tables("users").NewRow()
drow(0) = "Gene"
drow(1) = "Rodenberry"
ds.Tables("users").Rows.Add(drow)
drow = ds.Tables("users").NewRow()
drow(0) = "Maxwell"
drow(1) = "Stewart"
ds.Tables("users").Rows.Add(drow)
以上代码为DataSet增加一个新的列;
objAdapter.Update(ds, "users")
以上代码将更新提交到数据库;
End Sub
</script>
现在看看数据库,会发现已经多了两列。
另外一个举例
我们可以看一个完整的举例:
<%@ Page Language="VB" Debug="true" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.Oledb" %>
<script language="VB" runat="server">
Sub Page_Load(sender as object, e as eventargs)
Dim objConn as New OleDBConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=e:\sff\site\db\test.mdb")
objConn.Open()
Dim ds as Dataset = New DataSet()
Dim objAdapter as New OleDbDataAdapter("SELECT * FROM users", objConn)
Dim objCmdBld as New OleDbCommandBuilder(objAdapter)
objAdapter.Fill(ds, "users")
Dim drow as DataRow
drow = ds.Tables("users").Rows(1)
drow(0) = "Joseph"
ds.Tables("users").Rows(0).AcceptChanges
objAdapter.Update(ds, "users")
End Sub
</script>
总结:
以上我们知道了怎样更新DataSet的数据,可能那些并不是特别实用,下一章我们将涉及到用较好的方式显示数据和通过TextBox修改数据。
四、数据显示和修改
这一章我们将学习怎样显示数据,喜欢偷懒的你可以从拷贝以下代码开始:
<%@ Page Language="VB" Debug="true" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.Oledb" %>
<script language="VB" runat="server">
Sub Page_Load(sender as object, e as eventargs)
Dim objConn as New OleDBConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=e:\sff\site\db\test.mdb")
objConn.Open()
Dim ds as Dataset = New DataSet()
Dim objAdapter as New OleDbDataAdapter("SELECT * FROM users", objConn)
Dim objCmdBld as New OleDbCommandBuilder(objAdapter)
objAdapter.Fill(ds, "users")
Repeater
Repeater是一个根据面板循环显示数据的控件。
ItemTemplate:数据主要在这里显示
AlternativeItemTemplate:利用它可以应用交替的样式;
HeaderTemplate:头格式;
SeparatorTemplate:分隔数据列;
FooterTemplate:脚格式
DataBind()
DataBind()将数据与页面控件绑定:
Repeater1.DataSource = ds.Tables("users").DefaultView
DataBind()
以上代码将数据绑定到Repeater,如果没有绑定,数据不会显示。
其他代码
以下是举例的其他代码:
Rpt.DataSource = ds.Tables("users").DefaultView
DataBind()
End Sub
</script>
<html><body><font face="Arial" size="2">
<asp:repeater id="Rpt" runat="server">
<HeaderTemplate>
<table border="0" cellspacing="1" cellpadding="3">
<tr>
<td bgcolor="#6699FF" width="25%">Last Name</td>
<td bgcolor="#6699FF" width="25%">First Name</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<%# Container.DataItem("LName") %>
</td><td>
<%# Container.DataItem("FName") %>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:repeater>
</font></body></html>
说明:
一、 设置了Repeater的DataSource;
二、 绑定数据到Repeater;
三、 Repeater数据控件开始;
四、 HeadTemplate定义Repeater的头信息;
五、 ItemTemplate定义具体数据填充;
六、 FooterTemplate定义Repeater脚信息;
DataList
DataList和Repeater有点相似,和Repeater不同的是,DataList可以编辑数据。可以和Repeater一样使用Template,但是它具有两点不同:
SelectedItemTemplate:显示选择的列;
EditItemTemplate:显示要编辑的列;
以下是一个使用DataList的简单举例:
dl.DataSource = ds.Tables("users").DefaultView
Databind()
End Sub
Sub dl_ItemCommand(sender as object, e as DataListCommandEventArgs)
dl.SelectedIndex = e.Item.ItemIndex
dl.DataBind()
End Sub
</script>
<html><body><font face="arial" size="2"><form runat="server">
<asp:datalist id="dl" runat="server"
HeaderStyle-BackColor="#6699FF"
SelectedItemStyle-BackColor="#6666FF"
SelectedItemStyle-ForeColor="#FFFFFF"
RepeatLayout = "table"
RepeatDirection = "vertical"
DataKeyField = "ID"
OnItemCommand="dl_ItemCommand">
<HeaderTemplate>
Last Name, click for full name.
</HeaderTemplate>
<ItemTemplate>
<asp:linkbutton id="b1" runat="server" Text='<%# Container.DataItem("LName") %>' CommandName = "select" />
</ItemTemplate>
<SelecteditemTemplate>
<%# Container.DataItem("LName") &", " &Container.DataItem("FName") %>
</SelectedItemTemplate>
</asp:datalist>
</form></font>
</body>
</html>
说明:
一、 绑定数据以后,建立了一个过程;
二、 将DataList放入Form中,因为在以下的步骤中要求根据选择列刷新页面;
三、 接着定义了一些数据显示格式;
四、 HeaderTemplate:DataList头信息;
五、 ItemTemplate:加入链接,定义事件;
六、 SelectedItemTemplate:显示First 和 Last Name;
DataGrid
可能它是功能最强大的控件,不管简单还是复杂它都可以实现。
和ItemTemplate不同,DataGrid有不同类型的列:
Bound Columns:DataGird默认列显示方式;
Button Columns:按钮列;
Edit Command Column:可以编辑的列;
Hyperlink Column :带连接的列;
Templated Column :自定义列显示;
dg.DataSource = ds.tables("users").DefaultView
DataBind()
End Sub
</script>
<asp:DataGrid id="dg" runat="server" />
以上代码很简单,就是绑定数据。
dg.DataSource = ds.tables("users").DefaultView
DataBind()
End Sub
</script>
<asp:DataGrid id="dg" runat="server"
BorderColor="black"
GridLines="vertical"
cellpadding="3"
cellspacing="1"
width="50%"
Font-Names="Arial"
Font-Size="10pt"
HeaderStyle-BackColor="#6699FF"
AlternatingItemStyle-BackColor="#6666FF"
AutoGenerateColumns="False">
<Columns>
<asp:BoundColumn HeaderText="ID" DataField="ID" />
<asp:templateColumn HeaderText="Name">
<ItemTemplate>
<asp:label id="Name" runat="server" Text='<%# Container.DataItem("FName") &" " &Container.DataItem("LName") %>' />
</ItemTemplate>
</asp:templatecolumn>
</Columns>
</asp:datagrid>
可能有一点复杂,我们看说明:
一、 绑定数据以后,设置了一些DataSet显示效果,包括字体、表宽、头信息背景颜色、交替背景颜色、是否自动生成数据表等;
二、 加入一个自定义格式列,该列名为Name,由字段Fname和Lname组成;
现在才刚刚开始
可能现在你还没有感受到DataSet的好处,以后的章节我们将学习怎样编辑数据。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者