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