Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > .NET
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-05-2010
Avatar de boreg
boreg boreg is offline
Miembro
 
Registrado: oct 2007
Ubicación: México, México
Posts: 76
Poder: 17
boreg Va por buen camino
Exclamation 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 SQL [-]

CREATE TABLE prueba (
campo1 number
)

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
Gracias
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 19:02:56.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi