Vb.net 一个OracleConnection中有多个数据库命令
假设我有以下代码:Vb.net 一个OracleConnection中有多个数据库命令,vb.net,oracle,odp.net,transactionscope,Vb.net,Oracle,Odp.net,Transactionscope,假设我有以下代码: Dim sqlText as String = "MERGE INTO..." Using scope As New TransactionScope() Using conn As New OracleConnection(connString) conn.Open() Using oCommand As New OracleCommand(sqlText) oCommand.BindByName = Tr
Dim sqlText as String = "MERGE INTO..."
Using scope As New TransactionScope()
Using conn As New OracleConnection(connString)
conn.Open()
Using oCommand As New OracleCommand(sqlText)
oCommand.BindByName = True
oCommand.Parameters.Add("param1",OracleDbType.Raw,value1,ParameterDirection.Input)
oCommand.Parameters.Add("param2",OracleDbType.IntervalDS,value2,ParameterDirection.Input)
// etc.
oCommand.Connection = conn
oCommand.Prepare()
oCommand.CommandType = CommandType.Text
oCommand.ExecuteNonQuery()
End Using
End Using
End Using
如果我想使用不同的参数(例如,我将对象列表放入数据库)但使用相同的代码执行多个合并到…,那么在哪里最好?我是将环路放在“使用连接…”的内部还是外部
e、 g:
或
当我把它放在外面(第二个)时,我得到一个错误:
Promote方法为分布式数据库返回了无效的值
交易
---编辑---
好的,我找到了答案,它回答了关于错误的部分(一个TransactionScope中的多个连接导致了问题)-所以我必须将每个命令作为一个单独的事务来执行?或者,只连接一次,并在其中完成所有操作
有人能帮我理解如何使用同一个OracleConnection对象和SQL进行多次写入,但参数不同吗?当我做这种事情时,我希望所有命令都在同一个事务中,我的循环实际上会在使用oCommand的
块中
设置一次命令(即超时、命令类型、连接等),然后循环将设置参数并重复执行。合并语句的执行应在使用conn的内部…
,否则您将无法使用数据库连接。祝你好运。好的,对不起,问题不清楚,我会告诉你你收到的错误是ORA错误吗?如果是,请提供错误号和完整的错误消息。回答错误部分(我将更新问题)
Dim items as List(Of ItemsToPutIntoDatabase) = ...
Using scope as New TransactionScope()
For Each item
Using conn...
Dim items as List(Of ItemsToPutIntoDatabase) = ...
Using scope as New TransactionScope()
Using conn...
For Each item