Conectar un DB2 (AS400) con ASP.Net, Vb.Net o C#

BOO

Lanero Reconocido
19 Jul 2004
1,068
Hola Colegas,

Necesito conectar un BD2 (AS400) a una pagina Web en Aps.net, C# o VB.net.

Si alquién conoce información al respecto les agradeceria la ayuda es urgente.

Ahh!! y si por casualidad tienen algun ejemplito no me molestaria muchas gracias.

diegoboo@hotmail.com
 
Se puede hacer por OleDb, pero te debo el ejemplo por ahora porque no lo tengo a mano. En el proyecto que estoy trabajando, no me preocupo por la conexión porque me entregaron una clase ya hecha que se encarga de eso (aunque quiero deshacerme de ella porque le hice ingeniería reversa y vi una buena cantidad de malas prácticas de programación, que me están ocasionando problemas en mi programa).

La clase utiliza una DLL llamada IBM.Data.DB2.iSeries.dll, que es instalada por el Client Access 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.

Asegúrate de tener el IBM Client Access instalado en tu 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í mismo encuentras la librería de la que te hablo. No se si esté disponible en todas las versiones, yo estoy trabajando con la V5R3.
 
Olvidé decirte que la librería IBM.Data.DB2.iSeries.dll está compilada en lenguaje intermedio (de java), así que hacerle ingeniería reversa es sencillo, si quieres ver cómo hace la conexión directa a AS/400.
 
hey, nunca dijiste si la info te sirvió o no. Aquí encontré un sitio donde están las cadenas de conección para conectarse prácticamente a cualquier base de datos que existe, incluyento DB2 de AS/400. Suertex.

http://www.connectionstrings.com/
 
Hasta ahora en el sitio de el juli encontre un ejemplo de comohacerlo , esta en ingles y hasta ahor acorre , es rapida y no molesta tanto como la clase en java.
 
¿Por qué te molesta la clase en java? ¿Qué problema tienes? ¿Cómo te conectaste sin la clase, por OleDB?
 
§en§ei_Magnu§ que pena no haberte contestado antes pero hasta ahora puedo hacerlo, la información está interesante, excelente apenas pienso probarla por que no he tenido tiempo, pero dejame decirte que ya logré conectarme al DB2 desde VB.NET por medio de ADODB y realizar las operaciones basicas (Guardar,Eliminar y Modificar). Hasta acá todo marcha bien pero cuando voy a realizar lo mismo en un formulario Web con asp.net no me funciona es imposible la conexión: al parecer es por la version de AS400 (4.4), por lo pronto le trabajaré al asunto y le estoy contanto. Muchas gracias
 
Bueno, yo tuve que dejar el proyecto en el que estaba y ya ni forma de probar con AS/400, pero espero que la info haya sido útil. Me quedé con las ganas de probar la conexión directa a través de la librería IBM.Data.DB2.iSeries.dll.
 
Truena fuera de la compu de desarrollo...

Se puede hacer por OleDb, pero te debo el ejemplo por ahora porque no lo tengo a mano. En el proyecto que estoy trabajando, no me preocupo por la conexión porque me entregaron una clase ya hecha que se encarga de eso (aunque quiero deshacerme de ella porque le hice ingeniería reversa y vi una buena cantidad de malas prácticas de programación, que me están ocasionando problemas en mi programa).

La clase utiliza una DLL llamada IBM.Data.DB2.iSeries.dll, que es instalada por el Client Access 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.

Asegúrate de tener el IBM Client Access instalado en tu 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í mismo encuentras la librería de la que te hablo. No se si esté disponible en todas las versiones, yo estoy trabajando con la V5R3.

Oye como le hiciste por q cuando lo pongo en el servidor de pruebas antes de pasar a produccion me sale el siguiente error :

Attempted to read or write protected memory. This is often an indication that other memory is corrupt


[AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.]
IBM.Data.DB2.iSeries.CwbDc.DcDnConnect(Int32 functionNumber, IntPtr connectionHandle, MpDcConnection& parms) +0
IBM.Data.DB2.iSeries.MPConnection.Connect() +645

[iDB2DCFunctionErrorException: An unexpected exception occurred. Type: System.AccessViolationException, Message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt..]
IBM.Data.DB2.iSeries.MPConnection.Connect() +727
IBM.Data.DB2.iSeries.MPConnectionManager.GetConnection(iDB2Connection piDB2Connection) +951
IBM.Data.DB2.iSeries.iDB2Connection.Open() +296
System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +121
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +137
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) +86
Plazas_DB.GetPlazasSolicitud(Int32 IdSolicitud, Int16 Version) in c:\Sites\Cp\App_Code\Plazas_DB.cs:109
Plazas_Component.GetPlazasSolicitud(Int32 IdSolicitud, Int16 Version) in c:\Sites\Cp\App_Code\Plazas_Component.cs:55

[TargetInvocationException: Exception has been thrown by the target of an invocation.]



instalé el iSeries Access for Windows Service Packs 5722-XE1 V5R4M0 Cumulative Service Pack Level en el servidor y obviamente en la máquina en q c desarrollo :\
 
Hola, siento no haber contestado antes, pero he estado muy ocupado. Igual, ya no puedo serle de ayuda. Abandoné el desarrollo de software hace ya dos años y me dediqué a la literatura.

En todo caso, el mensaje indica que puede haber una falla en la memoria. Esto puede ser un problema de hardware en un módulo de RAM o en la memoria caché L2.

Sin embargo, estos mensajes a veces pueden ser engañosos. El tipo de error es System.AccessViolationException, lo que me hace pensar que más probablemente se trata de un problema de permisos. Habría que revisar muy bien que las librerías de IBM tengan permisos de acceso a todos los componentes del Client Access y, por supuesto, permisos de acceso a DB2.

Le recomiendo leer bien la documentación del service pack que instaló para verificar qué cambios pudo hacer en la máquina. Suerte con eso.
 

Los últimos temas