Publicado el 1 comentario

Se produjo una excepción en el inicializador de tipo de ‘Oracle.DataAccess.Client.OracleConnection’

Mientras hacía la distribución de una aplicación .NET que incluían las librerías del ODT de Oracle, lanzaba el error Se produjo una excepción en el inicializador de tipo de ‘Oracle.DataAccess.Client.OracleConnection’ al hacer la conexión a la base de datos.
En mi caso había trabajado antes con una versión anterior al ODT con el que desarrollé la aplicación. Mi distribución ODT Xcopy con el que hice el “deploy” de la aplicación, era una versión anterior a la que el Visual Studio cargó.
Revise que las versiones de los dll sean los correctos y se corregirá este error.

Publicado el Dejar un comentario

Campo incremento en Oracle sin crear una Secuencia.

A veces es necesario generar en una consulta un campo que se incremente por si solo, de uno en uno. Para lograr esto Oracle cuenta con la funcion ROWNUM. Nos puede ser muy útil cuando queremos crear paginación de los resultados de una consulta en WEB.

Esta función permite generar una columna que va numerando de uno en uno los resultados de una consulta SQL. Pero hay que tener cuidado al utilizar esta función, ya que a veces su utilización puede hacerse incorrectamente.

Para una explicacion detallada de su uso te recomiendo este link, espero te sea de ayuda.

Ejemplo:

select ROWNUM, campo1, campo2 from tabla;

Publicado el 2 comentarios

ResultSet no se hace editable en Oracle

Si la consulta que construye el ResultSet en java es del tipo:

Select * from tabla;

El ResultSet no será editable aunque se le especifique. Para lograr que sea editable es necesario especificar explícitamente los campos en la consulta y que estos formen una identificación única (primary key):

Select campo1, campo2, … from tabla;.

Ejemplo de ResultSet editable:

    try {
        // Crea la sentencia que creará un ResultSet editable
        Statement stmt = conexion.createStatement(
            ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
    
        // Se especifican los campos formadores de una identificacion única del registro para que se vuelva editable
        ResultSet resultSet = stmt.executeQuery("SELECT columna1, columna2 FROM tabla");
    } catch (SQLException e) {
      ....
    }