Conexión con mysql desde iSeries

1
8856

Conexión con mysql desde iSeries.

0. Índice de contenidos.

1. Introducción

En primer lugar quiero agradecer el espacio que me brinda

Autentia para

divulgar este tutorial, es el primero y espero que no sea el último. En segundo lugar agradecer a Scott Klement por

su sabiduría y su generosidad al transmitirla.

Este tutorial va intentar explicar como nos podemos conectar a

cualquier base de datos desde un as/400 o iseries gracias a la

posibilidad de llamar a métodos java desde RPG, consiguiendo eliminar

las limitaciones de conexión de un iSeries. 

La

base de datos que vamos a utilizar para ilustrarnos va a ser MYSQL

pero en los ficheros que os podéis bajar en el enlace que os detallo

más abajo, vienen ejemplos para cualquier base de datos conocida.

2. Entorno

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil HP EliteBook 2560p i5-2540M
  • Sistema operativo: Windows 7 Enterprise.
  • JDK 1.7.0_15

3. Instalación

Instalación en nuestro iSeries:

1.- Lo primero que debemos hacer es bajarnos el driver de

conexión con

la base de datos que corresponda, en nuestro caso lo vamos a hacer con

mysql, por lo tanto nos bajamos el driver: http://www.mysql.com/downloads/connector/j/

2.- Subimos el fichero jar del driver al

IFS(carpeta)  a nuestro iSeries:

  • Instalación del jdbc en IFS:
  • Creamos

    el directorio en el iseries: CRTDIR DIR(‘/java’) DTAAUT(*RX)

    OBJAUT(*NONE).

  • Creamos

    la carpeta donde vamos a alojar el fichero jar: CRTDIR

    DIR(‘/java/jdbc’) DTAAUT(*RX) OBJAUT(*NONE).

  • Copiamos el fichero jar en

    el directorio que hemos creado.

3.- Una vez copiado el fichero jar en nuestra carpeta iSeries, ya

podemos hacer uso de él, por lo que añadimos el fichero JAR a nuestro CLASSPATH

del iSeries

para poder

ejecutar nuestros programas. 

  • ADDENVVAR

    ENVVAR(CLASSPATH)

    VALUE(‘/java/jdbc/mysql-connector-java-X.X.X-bin.jar’)

  • 4.- Vamos a subir los programas necesarios para conectarnos a la

    base de datos. Aquí es donde realmente se ve el trabajo realizado

    por Scott Klement, ya que se ha creado los prototype

    necesarios para poder ejecutar todos los métodos que necesitamos para

    conectarnos a la base de datos que queramos. 

    Os dejo algún fragmento

    del código (añadirlo todo sería muy largo), donde podemos ver como se crean y como llamamos a métodos java desde RPG.

    JDBC_H.RPGLE

    JDBCR4.RPGLE

    Podéis bajaros los fuentes y ficheros necesarios donde se incluye

    un README que explica perfectamente como se realiza la subida de

    los ficheros y su instalación.

    http://www.iprodeveloper.com/Content/Content/63737/RpgAndJdbc.zip

    5.- Una vez subidos los programas al iSeries:

    • Creamos el módulo RPG

      (CRTRPGMOD)

    • CRTRPGMOD JDBCR4

      SRCFILE(QRPGLESRC) DBGVIEW(*LIST)

    • Creamos el programa de

      servicios (CRTSRVPGM) 

    • CRTSRVPGM

      SRVPGM(JDBCR4) EXPORT(*SRCFILE) SRCFILE(QSRVSRC)

    •  Creamos

      el directorio de enlace (CRTBNDDIR) 

    • CRTBNDDIR

      BNDDIR(mylib/JDBC)

    • Añadimos la entrada

      directorio enlace (ADDBNDDIRE)

    • ADDBNDDIRE

      BNDDIR(mylib/JDBC) OBJ((JDBCR4 *SRVPGM))

    4. Ejemplos.

    Os voy a mostrar dos ejemplos que están realizados en Rpg

    Free y cuya explicación de las líneas importantes, las he puesto en

    el propio código para que sea más fácil entender lo que vamos

    realizando:

    1.- Muestra una conexión con mysql a través del iSeries.

    2.- El segundo ejemplo va a mostrar el funcionamiento

    de una conexión con mysql recorriendo el resultado y guardandonos dicho

    resultado en un fichero del iserie.

    5. Referencias

    6. Conclusiones.

    Gracias a este método de conexión, conseguimos eliminar la

    barrera que suponía el acceder desde un iseries a otra base de datos de

    otro fabricante. Con ello hemos conseguido ampliar nuestro abanico de

    posibilidades para nuestras aplicaciones en iseries.

    Un saludo.

    Berto Gil

    mailto:berto.gil@gmail.com

    1 Comentario

    1. Gracias Berto, yo ya tenía trabajando una conexión con un servidor MSSQL basado en el Trabajo de Scott K. pero ahora que estaba intentando conectar con un server MySQL no funcionaba.

      En teoria Scott hizo el subprocedimiento JDBC_Connect() como conector para todas la BD basadas en JDBC pero no me funcionó.

      Mirando tu ejemplo observe que en tu segundo ejemplo en lugar de utilizar el subprocedimiento JDBC_Connect() usaste MySql_Connect() así que lo use y !Listo¡ funcionó a la perfección

    Dejar respuesta

    Please enter your comment!
    Please enter your name here