当前位置:首页 > 网络编程 > 软件语言 > .NET > 在.NET中如何使用Oracle数据库事务(6)

在.NET中如何使用Oracle数据库事务(6)

点击次数:58 次 发布日期:2008-11-06 08:09:33 作者:源代码网
源代码网推荐
广告载入中
您将看到以下结果:

  PRODUCT_ID PRODUCT_TYPE_ID NAME       NAME
  ---------- --------------- ---------- -----------------------
  DESCRIPTION                                             PRICE
  -------------------------------------------------- ----------
  5               3 Magazine   Oracle Magazine
  Magazine about Oracle                                    4.99

接下来,您将了解如何设置事务保存点。

在 .NET 程序中设置事务保存点

正如本文前面所提到的那样,您可以设置一个保存点,以便将事务回滚至该特定的点,同时保持事务中的其他语句原封不动。您可以使用 OracleTransaction 类的 Save() 方法在事务中设置保存点。

如果您有一个非常长的事务并且希望能够仅回滚到某个特定的时间点,那么您可能要使用保存点。例如,您可能想对 10 个产品做一些更改,然后设置一个保存点,然后再对另 10 个产品做更改;如果您在进行第二批更改时出现了错误,那么您可以回滚至保存点,使您的第一批更改原封不动。

我将带您逐步完成演示如何使用保存点的 C# (TransExample2.cs) 示例程序和 VB.NET (TransExample2.vb) 示例程序中的相关新步骤。这些程序向表 products 中添加一行,设置一个保存点,向表 products 中添加另一行,回滚至保存点,然后从表 products 中读取这些行。在回滚至保存点后,只有添加到表 products 中的第一行保留了下来:第二行将已被删除。

第 1 到第 3 步与“在 C# 和 VB.NET 中使用数据库事务”部分中所示的步骤相同,因此在这里将其省略。

第 4 步

向表 products 中添加一行,该行的产品 ID 为 6。

在 C# 中:

myOracleCommand.CommandText =
  "INSERT INTO products (" +
  "  product_id, product_type_id, name, description, price" +
  ") VALUES (" +
  "  6, 2, "Man from Another World", "
    Man from Venus lands on Earth", 24.99" +
    ")";
  myOracleCommand.ExecuteNonQuery();

在 VB.NET 中:

  myOracleCommand.CommandText = _
  "INSERT INTO products (" & _
  "  product_id, product_type_id, name, description, price" & _
    ") VALUES (" & _
  "  6, 2, "Man from Another World", "Man from Venus lands on Earth", 24.99" & _
    ")"
  myOracleCommand.ExecuteNonQuery()

第 5 步

使用 OracleTransaction 的 Save() 方法设置一个名为 SaveProduct 的保存点。

在 C# 中:

  myOracleTransaction.Save("SaveProduct");

在 VB.NET 中:

  myOracleTransaction.Save("SaveProduct")

源代码网推荐

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华