首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

9.3.4  进行更新

提取了数据后,还可以提供一种处理更新的方式。DataSourceView对象提供了Update、Delete和Insert方法与数据源通信,使之进行可能的更新。与Select方法一样,这些更新也是异步执行的。

注意:

在调用Update、Delete和Insert方法之前,应检查DataSourceView的CanUpdate、CanDelete和CanInsert属性。并不是所有的数据源都支持所有的操作。

这三个方法接受四个参数,前三个参数是一组名称/值对。

●       要更新的数据的主键(Insert方法不需要)

●       数据的原始值(Insert方法不需要)

●       新值(Delete方法不需要)

●       更新完成后调用的回调函数

下面的Visual Basic 2005代码创建了一个StateBag,再添加包含字段名称和值的名称/值对(从控件的文本框中提取)。接着,代码通过GetData方法提取DataSourceView对象,给该方法传送数组和插入完成后调用的函数。

Public Sub InsertData()

Dim InsertData As New StateBag

Dim dsv As System.Web.UI.DataSourceView

  dsv = Me.GetData

  If dsv.CanInsert = True Then

    InsertData.Add("CustId", Ctype(Me.FindControl("tb1"), TextBox).Text)

    InsertData.Add("CustName", Ctype(Me.FindControl("tb2"), TextBox).Text)

    dsv.Insert(InsertData, AddressOf Me.HandleInsert)

  End If

End Sub

C#的对应代码如下所示。

public void InsertData()

{

 StateBag InsertData = new StateBag;

 System.Web.UI.DataSourceView dsv;

 dsv = this.GetData();

 if(dsv.CanInsert == true)

 {

  InsertData.Add("CustId", ((TextBox) this.FindControl("tb1")).Text);

  InsertData.Add("CustName", ((TextBox) this.FindControl("tb2")).Text);

  dsv.Insert(InsertData, new DataSourceViewOperationCallback(HandleInsert));

 }

}

在所有的更新完成后,就执行在Update、Delete和Insert的最后一个参数中使用的函数。它需要两个参数:更新影响的记录数和异常对象。如果在处理过程中出现错误,就把异常对象设置为错误。下面的Visual Basic 2005代码检查异常对象,如果出现了错误,就引发一个异常,让应用程序捕获它。

Function HandleInsert(ByVal affectedRecords As Integer, _

                                       ByVal ex As Exception) As Boolean

   If ex IsNot Nothing Then

      Throw ex

   End If

End Function

C#的对应代码如下所示。

public bool HandleInsert(int affectedRecords, Exception ex)

{

 if(ex == null)

 {

  throw ex;

 }

}

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论