FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Problema aislamiento OracleTransaction VB.NET
Saludos amigos, recientemente estoy desarrollando con VB.NET (VS2005) y Oracle (9i).
El problema que tengo es con una aplicacion que deberia funcionar de la siguiente manera 1.-Inicio transaccion (begintransaction(readcommitted)) 2.-Inserto n registros 3.-Termino transaccion (commit) En mi experiencia, los registros insertados deberian reflejarse en la BD hasta que se hace commit, pero eso solo sucede la primera vez que ejecuto el codigo ya que, a partir de la 2da, cada registro se refleja en la BD en cuanto es insertado, es decir, no es necesario hacer commit y si realizo un rollback los registros no se eliminan. Haciendo pruebas encontre que si no especifico el nivel de aislamiento al iniciar la transaccion(begintransaction()), el codigo hace lo que (imagino) deberia hacer. Lo raro es que al revisar el nivel de aislamiento por default es ReadCommitted Me gustaria saber si es un bug y a alguien mas le ha pasado, si algo estoy haciendo mal o si me hace falta algo, de antemano gracias por sus comentarios. Por lo pronto procedere a quitar la especificacion del aislamiento para que funcione correctamente. Agrego el codigo utilizado en mis pruebas
Código:
'agregar referencia en el proyecto a System.Data.Oracleclient 'agregar en el formulario 2 textbox tbInicial y tbFinal, 2 botones Button1 y Button2 Public Class Form1 Dim cnn As New OracleClient.OracleConnection Dim qr As New OracleClient.OracleCommand Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load With cnn .ConnectionString = _ "User ID=usuario;" & _ "Password=password;" & _ "Data Source=servicio;" & _ "Persist Security Info=True" .Open() End With With qr .Connection = cnn .CommandType = CommandType.Text .CommandText = _ " INSERT INTO PRUEBA " & _ " VALUES ( " & _ " :VALOR) " .Parameters.Add(":VALOR", OracleClient.OracleType.Number) End With End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Ejecucion especificando isolationlevel Dim t As OracleClient.OracleTransaction = cnn.BeginTransaction(IsolationLevel.ReadCommitted) qr.Transaction = t For a As Integer = tbInicial.Text To tbFinal.Text qr.Parameters(":VALOR").Value = a qr.ExecuteNonQuery() Next 'a partir de la segunda ejecucion los registros se reflejan en la bd en este punto MsgBox("Se hara commit") t.Commit() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 'Ejecucion sin especificacion de isolationlevel Dim t As OracleClient.OracleTransaction = cnn.BeginTransaction() qr.Transaction = t For a As Integer = tbInicial.Text To tbFinal.Text qr.Parameters(":VALOR").Value = a qr.ExecuteNonQuery() Next MsgBox("Se hara commit") t.Commit() 'los datos se reflejan en la bd hasta este punto End Sub End Class |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Aislamiento de Modulos de Datos en Aplicaciones MDI | apicito | Conexión con bases de datos | 4 | 17-10-2003 09:08:10 |
Aislamiento de Transacciones en aplicación MDI | apicito | Conexión con bases de datos | 1 | 28-07-2003 15:22:53 |
|