我正在使用 Oracle 10g vb.net 2005 实现一个应用程序,我遇到了一个功能,它应该从 Oracle 中的三个不同表中选择/插入/更新/删除数据。
所以我想知道是否有办法分别准备所有 3 个命令(SQL 语句),然后一次性将它们执行到 oracle,因此通过这种方式,我可以保证所有命令都成功执行或全部执行失败,而且我可以获得更多的性能,这在我的情况下至关重要。
因此,我正在寻找一种语法 vb.net 可以帮助我在一次向预言机执行多个 OracleCommand 。
这可以用伪代码回答
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 方法的事务的开始。事务块内的操作保证全部发生或全部不发生。
如果一切顺利,则确认事务,所有内容都保留在表中。如果发生某些事情中断了您的代码流(异常),您应该调用"回滚"以取消您在事务内部对数据库所做的一切。