La culpa fue del spectrum

La culpa fue del spectrum

lunes, 15 de agosto de 2016

Rjb - Ruby Java Bridge

La gema rjb nos permite conectar desde ruby mediante un archivo jar a una base de datos usando el driver JDBC.
Yo lo suelo utilizar desde windows en pequeños programas de migración de tablas de una base de datos a otra. 

Una vez instalado ruby, para poder instalar la gema rjb, el sistema te pedirá que te descargues e instales el devkit de ruby, un jdk de java y que configures las variables JAVA_HOME.

Es importante que tengas en cuenta que ambas versiones de ruby y java deben de ser de la misma arquitectura para que funcione correctamente. En caso contrario creará la gema rjb pero después cuando la uses desde los programas te aparecerán errores.

En este caso las conexión es una "legendaria" base de datos de firebird por lo que me descargo el correspondiente jar. 
Un ejemplo que cuenta los registros de una tabla sería el siguiente. 

require 'rjb'
Rjb::load(classpath = 'C:/Software/Jaybird-2.2.11-JDK_1.8/jaybird-full-2.2.11.jar',['org.firebirdsql.jdbc.FBDriver'])

DriverManager = Rjb::import('java.sql.DriverManager')

begin
    sen="Select count(*) from TABLA1"
    connection = DriverManager.getConnection('jdbc:firebirdsql://ipserver:3050/carpetas_que_contiene_BD/EJEMPLO.gdb','sysdba','masterkey')

    statement = connection.prepareStatement(sen)
    result_set = statement.executeQuery

    while(result_set.next())
        puts result_set.getObject(1).toString
      end
ensure
     result_set.close if defined?(result_set) && !statement.nil?
     statement.close if defined?(statement) && !statement.nil?
     connection.close if defined?(connection) && !connection.nil?
end

Conduce entre la niebla

La culpa fue del spectrum