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