网站建设知识   ASP/ASP.NET

修改数据并更新回数据源



文:admin  发表时 间:2006-7-24 16:18:39

 在处理数据的时候,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:\InetPub\wwwroot\CR\CH05\MyWeb.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>


修改数据并更新回数据源
数据尚未修改前
修改数据并更新回数据源
数据修改后