1

我正在使用 vb.net 2005 和 Oracle 10g 实现一个应用程序,我遇到了一个应该从 Oracle 中的三个不同表中选择/插入/更新/删除数据的功能。

所以想知道有没有办法分别准备好所有3条命令(SQL语句),然后一次性执行到oracle,这样我就可以保证全部执行成功或者全部失败执行,而且我可以获得更多的性能,这对我来说至关重要。

因此,我在 vb.net 中寻找一种语法,它可以帮助我一次执行多个 OracleCommand 到 oracle。

4

1 回答 1

1

这可以用伪代码来回答

Dim cnn as OracleConnection
Dim tr as OracleTransaction 
Try
    cnn = new OracleConnection("your_connection_string")
    cnn.Open()
    tr = cnn.BeginTransaction(IsolationLevel.ReadCommitted)

    Dim cmd1 as OracleCommand = con.CreateCommand();
    Dim cmd2 as OracleCommand = con.CreateCommand();
    Dim cmd3 as OracleCommand = con.CreateCommand();

    cmd1.CommandText = "Your_Query_Text1"
    cmd2.CommandText = "Your_Query_Text2"
    cmd3.CommandText = "Your_Query_Text3"    

    cmd1.ExecuteNonQuery()
    cmd2.ExecuteNonQuery()
    cmd3.ExecuteNonQuery()

    tr.Commit()
    cnn.Close()
    cnn = Nothing
    tr = Nothing
Catch
   if tr <> Nothing then
       tr.Rollback()
   End if 
   If cnn <> Nothing Then 
       cnn.Close()
   End If
   cnn = Nothing
   tr = Nothing
End Try

一个事务使数据库作为一个单元执行一系列动作。您标记调用连接的 BeginTransaction 方法的事务的开始。保证事务块内的操作要么全部发生,要么全部不发生。

如果一切顺利,您确认交易并且所有内容都保存在您的表中。如果发生某些事情中断了您的代码流(异常),您应该调用“回滚”来取消您在事务内部对数据库所做的一切。

于 2012-04-24T09:52:27.307 回答