Имам процес, при който предавам връзката си с оракул и транзакцията чрез Ref. Всичките ми вмъквания/изтривания изглежда работят добре. Една от актуализациите обаче изглежда се изпълнява добре, но данните в базата данни не се актуализират.
Чудя се дали изхвърлям обекта qry скоро преди да се ангажирам и това е причината. Това е първият ми опит да използвам транзакцията на оракул и всички проби, които намерих онлайн, изглежда го правят по метод. Трябва да се уверя, че преминава през целия ми процес, преди да се ангажирам, в противен случай искам да върна обратно.
Using conn As New OracleConnection(myObject.ConnectionString)
conn.Open()
Dim myTrans As OracleTransaction
myTrans = conn.BeginTransaction(IsolationLevel.ReadCommitted)
Try
If ClassName.Insert(conn, myTrans) THEN
'Insert Happened
End If
If ClassName.Update(conn, myTrans) THEN
End If
If ClassName.Delete(conn, myTrans) THEN
End If
MyTrans.Commit()
Catch ex As Exception
myTrans.Rollback()
Finally
'Close connection
If conn.State <> ConnectionState.Closed AndAlso conn.State <> ConnectionState.Connecting Then
conn.Close()
conn.Dispose()
End If
End Try
End Using
Ето един прост пример за моята функция за актуализиране на клас.
Public Function Update(ByRef conn As OracleConnection, ByRef myTrans As OracleTransaction) As Boolean
Dim result As Boolean = False
Try
Dim sql As String = ""
sql = sql & "UPDATE TABLENAME "
sql = sql & " SET"
sql = sql & " xyz = :xyz"
sql = sql & " WHERE id = :id"
Using qry As New OracleCommand(sql, conn)
qry.Transaction = myTrans
qry.Parameters.Add("id", OracleDbType.Decimal, Me.ID, ParameterDirection.Input)
qry.ExecuteNonQuery()
result = True
qry.Dispose()
End Using
Catch ex As Exception
Finally
End Try
Return result
End Function
Не възниква грешка при актуализацията, записът никога не се актуализира в DB.