在处理数据的时候,DataRow 对象会自动记录目前记录的状况。只要记录一有改变便作注记,等呼叫DataSetCommand 对象的Update 方法时,DataSetCommand 会自动产生适当的SQL叙述将修改更新至数据源。以下为Update 方法的语法:
DataSetCommand.Update(DataSet, "DataTable 名称")
下列程序代码片段,显示如何更改DataSet 对象中DataTable 对象里的数据:
Dim dtTable As DataTable dtTable=dsDataSet.Tables("Members") ' 方便程序写作起见, 先将 DataTable ' 的参考取回并由dtTable 对象管理 dtTable.Rows.Item(0).Item(0) = 资料' 或dtTable.Rows(0).Item(0) = 资料 ' 或dtTable.Rows(0)(0) = 资料 dscA.Update(dsDataSet, "Members") ' 利用DataSetCommand 对象的 ' Update 方法将改变更新至数据源
上述程序代码叙述在DataSetCommand 对象呼叫Update 方法时,会自动产生适当的SQL 叙述来执行更新的动作。接下来我们来作一个完整的范例,这个范例一开始会先将所有会员数据显示出来,并准备一些文字输入盒。我们可以在文字输入盒内输入所要修改的记录编号、字段名称以及要替代的新值,输入完毕后可按确定按钮执行更新的工作:
<%@Import Namespace=System.Data%> <%@Import Namespace=System.Data.ADO%> <html> <FORM id=Form1 Runat="Server" Action=""Ex15.aspx""> 要修改的序号: <INPUT Type="Text" Id=Text1 Runat="Server"><br> 要修改的字段: <INPUT Type="Text" Id=Text2 Runat="Server"><br> 要修改的新值: <INPUT Type="Text" Id=Text3 Runat="Server"> <INPUT Type="Submit" Value="确定"> </FORM> <Table Id="Table1" Runat="Server" Border="1"/> <Script Language="VB" Runat="Server"> Sub Page_Load(Sender As Object, e As EventArgs) Dim strConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:InetPubwwwrootCRCH05MyWeb.mdb" Dim strComStr As String = "Select * From Members" Dim dscA As ADODataSetCommand = New ADODataSetCommand(strComStr, strConStr) Dim dsDataSet As DataSet = New DataSet() dscA.FillDataSet(dsDataSet, "Members") ' 将使用者数据填入 DataSet 对象中 If IsPostBack Then If Text1.Value<>Nothing And Text2.Value<>Nothing _ And Text3.Value<>Nothing Then ' 确定文字输入盒都 有数据 dsDataSet.Tables("Members").Rows((Text1.Value).ToInt16 - 1)(Text2.Value) _ = Text3.Value dscA.Update(dsDataSet,"Members") End If End If AddTableToTable(dsDataSet) ' 呼叫将DataTable 填入HtmlTable 的副程序 End Sub Sub AddTableToTable(ByRef dsDataSet As DataSet) Dim Cell As HtmlTableCell Dim Row As HtmlTableRow Dim X,Y As Short Row=New HtmlTableRow Cell=New HtmlTableCell ' 将序号这一列的 Cell.InnerText="序号" ' 名称加入Row 对象中 Row.Cells.Add(Cell) For Y=0 To dsDataSet.Tables("Members").Columns.Count-1 ' 将各字 段 Cell=New HtmlTableCell ' 名称加入 Cell.InnerText=dsDataSet.Tables(0).Columns(Y).ColumnName ' Row 物件 Row.Cells.Add(Cell) Next Table1.Rows.Add(Row) '将显示字段名称的第一列加入表格中 For X=0 To dsDataSet.Tables("Members").Rows.Count-1 '将所有Members 的记录取出 Row=New HtmlTableRow Cell=New HtmlTableCell Cell.InnerText=X+1 ' 将记录的顺序加入第一栏 Row.Cells.Add(Cell) ' 并加入Row 对象的Cells 集合 For Y=0 To dsDataSet.Tables("Members").Columns.Count-1 ' 将记录 中所有 Cell=New HtmlTableCell ' 字段的 数据取 Cell.InnerText=dsDataSet.Tables(0).Rows(X)(Y) ' 出,并 放入Row Row.Cells.Add(Cell) ' 物件中 Next Table1.Rows.Add(Row) ' 将完成的一笔记录加入Table 对象的Rows 集合中 Next End Sub </SCRIPT> </html>
数据尚未修改前
数据修改后
|