Conectarse a una base de datos DB2 (as400)

Esta semana con unos amigos nos encontramos con la necesidad de conectarnos a una base de datos DB2 as400 desde un aplicativo hecho en ASP.NET.

Pues la verdad en un principio casi que no lo hacemos jeje, pero al final nos dimos cuenta que no es tan complicado. Se puede hacer de varias formas:

  1. Por medio de ODBC.
  2. Por medio de una librería llamada IBM.Data.DB2.iSeries.dll
  3. Y también lei que se puede por OleDB.

 

La que utilizamos al fin fue la segunda opción. Para poder utilizar esta dll se debe tener instalado el Client Acces de IBM. Esta clase es un driver nativo de DB2-AS/400, por lo que es la mejor opción de conexión en cuanto a rendimiento y manejo de tipos de datos. (Esto es lo que lei).

Tenemos que estar seguros de tener el IBM Client Access instalado en el equipo de desarrollo (es una interfaz gráfica basada en Java que te permite acceder a las BD de DB2 en un entorno gráfico de Windows), generalmente se instala en C:\Program Files\IBM\Client Access, y ahí es donde se encuentra la libreria.

Para empezar a trabajar debemos tener instalado:

  1. Microsoft .Net Framework y el Visual Studio. El proveedor IBM.Data.DB2.iSeries no necesita una versión particular del .NetFramework.
  2. Cuando instalemos el Client Acces debemos estar seguros de seleccionar el componente .Net Dara Provider, y si queremos el Headers, Libraries and Documentation para la Documentacion. (Ver imagen).


Si estamos seguros de tener instalado todo lo necesario lo único que falta que hacer es crear nuestro proyecto en visual studio, y agregar la referencia a la clase.


No olvidar importar el namespace en nuestro programa “Imports IBM.Data.DB2.iSeries”

Y listo ya tenemos una clase con todos los objetos manejados en ADO.NET con lo que empezamos a trabajar normalmente.


Estas son algunas de sus clases


Para terminar les dejare un ejemplito para que miren como es la cadena de conexión.


 


21 comentarios en “Conectarse a una base de datos DB2 (as400)

  1. Muy buena tu explicacion hombre! Justo empezare a trabajar en una empresa que utiliza OS/400 como S.O. y DB2 como gestor de base de datos. Me podrias decir de donde puedo descargar el client access? Crees q me podrias proporcionar esta dll IBM.Data.DB2.iSeries.dll ??? Gracias de antemano

    1. la dll IBM.Data.DB2.iSeries.dll pasandotela simplemente no funciona ya que ella como que tiene referencia con otras, por eso es que debes tener instalado el client acces, y haces la referencia desde el visual studio. El client acces que yo utilice ya lo tenia instalado la empresa donde hice el trabajo, no se si se necesitara licencia. Igual buscalo en la pagina de IMB. En este link esta el proveedor i series, descargalo y me cuentas como te va.

  2. Logre descargarme el Client Access 5.2, desgraciadamente no tiene la opcion de .Net Data Provider en la seleccion de componentes. Por favor indicame que version del Client Access utilizaste para tu trabajo. Crees que haya alguna forma de actualizarlo?

  3. Al final encontre la solucion a mi problema. Encontre este link http://www-128.ibm.com/developerworks/wikis/display/DB2/DB2+and+.NET+FAQ que explica que se necesita para desarrollar aplicaciones con DB2. Fueron 3 dias de lucha haciendo full googling😛
    Espero que les sea de utilidad. Por cierto, mi ultimo problema fue cuando ejecutaba el DB2Reader, lo que sucedia era que me exige colocarle el esquema a las tablas. por ejemplo mi query era ==> select * from INVENTORY con esto salia un error extranio… lo arregle colocando lo siguiente ==> select * from JOE.INVENTORY (JOE es el esquema de las tablas)
    =D

  4. Tengo varios equipos con windows CE los cuales necesito conectar a las bases de datos del ISERIES, pero no me permite hacerlo, mediante lo que usted indica se puede hacer pero para PC no asi para WINDOWS CE, habra alguna manera de realizar esta conexion?

  5. Hola

    Estoy desarrollando un aplicativo en ASP.NET y DB2
    y quisiera por favor hacerte una consulta
    Si solamente se necesita el Client Access para desarrolar o es que tambien los usuarios finales lo deben tener instalado a la hora subir mi aplixcacion al servidor web

    Gracias
    Saludos,

    1. Los clientes web ni se enteran si se conectan a un DB2, SQL server lo que importa es que el servidor web tenga el client access. En realidad utilizando la dll IBM.Data.DB2.iSeries desde el servidor alcanza.

      1. De hecho es posible usar la la dll IBM.Data.DB2.iSeries sin el client access, junto con un amigo nos pusimos a investigar cuales son las dll’s necesarias y con esto es posible conectar tu app sin tener instalado el client access.

        Solo tienes que lllevarte las siguientes dll’s:

        C:\WINDOWS\system32\cwbad.dll
        C:\WINDOWS\system32\cwbad1.dll
        C:\WINDOWS\system32\cwbbspc.dll
        C:\WINDOWS\system32\cwbbsspi.dll
        C:\WINDOWS\system32\cwbco.dll
        C:\WINDOWS\system32\cwbcore.dll
        C:\WINDOWS\system32\cwbdc.dll
        C:\WINDOWS\system32\cwbnl.dll
        C:\WINDOWS\system32\cwbrc.dll
        C:\WINDOWS\system32\cwbrw.dll
        C:\WINDOWS\system32\cwbsof.dll
        C:\WINDOWS\system32\cwbsv.dll
        C:\WINDOWS\system32\cwbunpla.dll
        C:\WINDOWS\system32\cwbunpls.dll
        C:\WINDOWS\system32\cwbunssl.dll

        ademas de incluir IBM.Data.DB2.iSeries en tu proyecto, ya que esta es la que llama las demas.

        Espero que les pueda ser util, Si alguien sabe alguna otra forma esperamos que la pueda compartir, Saludos.

      2. BUenas he visto este comentario que hizo Luxs, estoi muy interesado si de verdad es viable que el cliente no tenga instalado el client access si incluyo en mi aplicacion las DLL qie indica, he invertido mucho tiempo en ello pero no lo he conseguido….

        Es de verdad posible esto funcionando contra DB2 del as400?

  6. Excelente, he estado alejado del blog por multiples ocupaciones, pero me alegra saber que aun lo visitan, en estos dias volvere a retomarlo, para compartir mas experiencias adquiridas en el campo laboral.

    Al parecer uds se han encargado de complementar mucho el post muy bakano y pues espero esten visitando el blog que en proximos dias volvere a postear mas cosas interesantes.. un abrazo

  7. Hola buen día estoy tratando de conectarme con el codigo que dejaron arriba pero no puedo me da un error que dice:

    conection.ConnectionString = conn
    “La propiedad ConnectionString no es válida.”

  8. Estimado espero lo leas pronto..tengo una aplicacion en VS 2008 (VB) llamo a un procedimiento almacenado mandanlo un parametro pero me bota error..te paso el codigo

    Dim Cmd As New OleDbCommand
    Dim l_s_Par As New OleDbParameter
    Cmd.Connection = pConex
    Cmd.CommandType = CommandType.StoredProcedure
    Cmd.CommandText = s_StoreProcedure
    Dim Da As New OleDb.OleDbDataAdapter(Cmd)

    l_s_Par = Cmd.Parameters.Add(“@DESCRIPCION”, OleDbType.Integer)
    l_s_Par.Value = l_s_Nom
    Try
    If pConex.State = ConnectionState.Closed Then
    pConex.Open()
    End If
    Da.Fill(Dt)
    ————————–
    Me sale :SQL0363 el valor de la variable de indicador ampliada para el elemento 1 no es valida…el valor de la variable de indicado ampliada para el elemento 1 no estaba dentro del rango de valores aceptables..

    Espero me puedas ayudar gracias

  9. Bueno yo también estoy batallando con este mensaje
    try
    {
    using (iDB2Connection conexion = new iDB2Connection(“DataSource=;UserID=;Password=;”))

    {
    using (iDB2DataAdapter adaptador = new iDB2DataAdapter(“contasid.pa_muestra_detalles_sin_cabecera”, conexion))
    {
    adaptador.SelectCommand.CommandType = CommandType.StoredProcedure;
    adaptador.SelectCommand.Parameters.AddWithValue(“anho”, 2012);
    adaptador.SelectCommand.Parameters.AddWithValue(“mes”, 10);
    DataTable dt = new DataTable();
    adaptador.Fill(dt);
    dataGridView1.DataSource = dt;
    }
    }
    }
    catch (iDB2InvalidConnectionStringException ex)
    {

    MessageBox.Show(ex.MessageDetails);
    }

    Lo extraño es que en algunas pc de los usuarios funciona y en otras no… como ustedes saben en nuestras máquinas de desarrolladores todo funciona el problema es en los clientes …
    “La propiedad ConnectionString no es válida.”

  10. Una consulta puedo desde visual estudio 2010 ejecuta un función o programa rpg de as/400. Donde puedo conseguir información sobre el tema o un ejemplo de como ejecuta la función o programa rpg.

  11. ?Bienvenido! Le doy un cupon de descuento christmas2015year de 20% para todos los medicamentos genericos en la farmacia en linea.
    Se puede utilizarlo ilimitadamente hasta 2016-04-30
    Tambien se puede darlo a sus amigos.
    Ahorre el dinero con la farmacia en linea.

    Internet farmacia medications.space es:
    ?El precio mas bajo! ?Puede encontrar mas barato? Luego escribe aqui:
    Envio mundial
    Mas de 500 tipos de medicamentos
    Pago por MasterCard, Visa, Wire, Bitcoin
    El soporte telefonico de todo el dia en 6 paises

    Anti Alcohol
    Weight Loss
    Anxiety
    Anti Convulsant
    Vendidos
    Salud de gastro
    Hormonas
    Perdida de pelo
    Antibioticos
    Cinetosis
    Salud femenina
    De hiebas
    Cardiovascular
    Colesterol
    Antiviral
    Relajante muscular
    Dejar de fumar
    Aumento de pene
    Artritis
    Disfuncion erectiva
    Antibacteriano
    Colirio
    Enfermedad mental
    Salud masculina
    Alergia
    Metodo anticonceptivo
    Tension arterial
    Asma
    Perdida de peso
    Diuretico
    Cancer
    Antifungicos
    Cuidado de piel
    Paquetes ED de Hombres
    Antidepresivos
    Diabetis
    Alivio de dolor
    Recursos de dormir
    Salud general

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s