Foros del Web » Programación para mayores de 30 ;) » .NET »

diferencias entre ADO de visual basic 6.0 y ADO .net

Estas en el tema de diferencias entre ADO de visual basic 6.0 y ADO .net en el foro de .NET en Foros del Web. Hola: pues tengo algún programa en visual basic 6.0, que accede a una base de datos oracle mediante ADO, pero noto que ciertas consultas son ...
  #1 (permalink)  
Antiguo 28/07/2009, 01:38
 
Fecha de Ingreso: octubre-2006
Mensajes: 53
Antigüedad: 17 años, 6 meses
Puntos: 0
diferencias entre ADO de visual basic 6.0 y ADO .net

Hola:

pues tengo algún programa en visual basic 6.0, que accede a una base de datos oracle mediante ADO, pero noto que ciertas consultas son bastante lentas y durante el manejo de la apliación en ciertas ocasiones hay que esperar bastante tiempo.

Por tanto he pensado si una solución no sería migrar esa aplicación a .net, de tal modo que al ser más nuevo, estos problemas se resolvieran o por lo menos se ganara en velocidad.

En cuanto a las consultas que hacen que sea algo lenta la aplicación, no son especialmente complejas, ya que si utilizo algún programa para ejecutar las sentencias SQL directamente, no tarda apenas nada.

Esto me hizo poner algún tipo de interrupción en el código del programa para ver donde tardaba. Puse uno en el momento de llenar el recordset con los resultados de la consulta, y otro en el llenado del grid que usa el recordset para mostrar los datos.

En el llenado del recordset lo hace más o menos en un tiempo razonable, pero el llenado del grid no tanto.

Por tanto probé a crear el grid a mano, y llenándolo con un bucle con los datos del recordset, pero seguía tardando bastante.

Después de todo esto, y no conseguir mejorar el rendimiento, mi pregunta es si haciendo esa aplicación en .net se ganaría en rendimiento. Es una aplicación pequeña y sería un trabajo asumible.

Por ello me gustaría saber si existen diferencias entre ADO de visual basic 6.0 y el ADO de .net en cuanto rendimiento, así como en la utilización de los grid para mostrar la información, que es donde parece que está el mayor problema.




Muchas gracias.
Daimroc.
  #2 (permalink)  
Antiguo 28/07/2009, 07:59
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 9 meses
Puntos: 15
Respuesta: diferencias entre ADO de visual basic 6.0 y ADO .net

La verdad no cambies por ese problema cambia porque estas usando una tecnología de hace mas de 15 años.

El avanze es demasiado grande y lo mejor que puedes hacer es pasarte a Visual Studio 2008 usando el framework 3.5 porque ya en poco sale el framework 4.0 con Visual 2010 que esta por salir.

Saludos,
  #3 (permalink)  
Antiguo 28/07/2009, 09:06
 
Fecha de Ingreso: octubre-2000
Mensajes: 1.692
Antigüedad: 23 años, 6 meses
Puntos: 19
Respuesta: diferencias entre ADO de visual basic 6.0 y ADO .net

Hola.

Como te comenta dwaks creo que si lo pasas a vs2008 te va a funcionar muy bien. Con V.S 2008 podes usar el "driver" que tiene .net para usar oracle:

System.Data.OracleClient

Tranquilamente podrías para empezar y probar hacer una primera prueba en .net. Podes por ejemplo hacer un formulario, tirarle una grilla y ejecutar algún procedimiento almacenado. Esto serían pocas lineas y vas a poder ver si la velocidad y el rendimiento más o menos responden a tus expectativas.

Cualquier cosa avisa. Suerte!!!
__________________
PD: Con amor, fe, amor a Dios y amistad podemos hacer un mundo mejor!!!!
  #4 (permalink)  
Antiguo 28/07/2009, 10:23
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 9 meses
Puntos: 15
Respuesta: diferencias entre ADO de visual basic 6.0 y ADO .net

Aca ahy un Artículo que te muestra una forma facil de usar ADO.NET.

http://www.dotnetpanama.com/dotnetpa...os-en-NET.aspx

Saludos,
  #5 (permalink)  
Antiguo 29/07/2009, 00:47
 
Fecha de Ingreso: octubre-2006
Mensajes: 53
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: diferencias entre ADO de visual basic 6.0 y ADO .net

Muchas gracias por vustras respuestas.

Haré entonces alguna prueba y valolaré si realmente sí resuelve mi problema o no. En caso de tener algún problema o encontrarme con algún resultado interesante ya lo comentaré.



Gracias.
Daimroc.
  #6 (permalink)  
Antiguo 30/07/2009, 04:06
 
Fecha de Ingreso: octubre-2006
Mensajes: 53
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: diferencias entre ADO de visual basic 6.0 y ADO .net

Hola:

quería preguntar sobre la cadena de conexión. La aplicación se conectará a una base de datos oracle, y me gustaría saber cual es la mejor alternativa.

Sé que puedo usar un ODBC creado en el origen de datos de windows, el cual sé que existirá puesto que se necesita para que otras aplicaciones se conecten a la base de datos.

O bien tengo también la opción de utilizar el OledB de microsoft o incluso el OPC (el conector de oracle para .NET, creo que se llama así).

¿Qué diferencias tendría entre ambas formas? ¿Cual me daría más rendimiento?.



Relacionado con esto, quería saber la forma de proceder en el tema de conexiones. La aplicación tendrá dos formularios, uno principal y uno secundario que se abrirá cuando se ingresen o consulten los datos en el primero.

Mi duda es si es mejor tener una conexión, un comando y un dataReader global para ambos formularios y todos los métodos que necesiten la conexión, o es mejor crear cada uno de ellos justo en el momento de mostrar los datos en el datagridview.

Es decir, la primera forma sería más como variables globales, y la segunda instanciando cada vez cada componente cada vez que se fuera a rellenar el dataGrid. ¿Hay diferencias de rendiemiento en este segundo caso por tener que instanciar en todo momento los recursos necesarios o es despreciable?.




Gracias.
Daimroc.
  #7 (permalink)  
Antiguo 30/07/2009, 13:12
 
Fecha de Ingreso: octubre-2000
Mensajes: 1.692
Antigüedad: 23 años, 6 meses
Puntos: 19
Respuesta: diferencias entre ADO de visual basic 6.0 y ADO .net

Hola.

Lo mejor es que uses con vs2008 el driver que viene para Oracle:
System.Data.OracleClient

Ese drive funciona mejor que usar otro origen de datos. Te dejo un link que es de asp.net pero es casi el mismo codigo para windows forms, fijate que usa el OracleClient:

http://www.thaicreate.com/asp.net/c-...atareader.html
__________________
PD: Con amor, fe, amor a Dios y amistad podemos hacer un mundo mejor!!!!
  #8 (permalink)  
Antiguo 31/07/2009, 01:13
 
Fecha de Ingreso: octubre-2006
Mensajes: 53
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: diferencias entre ADO de visual basic 6.0 y ADO .net

Me ha surgido una duda.

Los drivers de oracle son unas librerías que no vienen en el framework stándar, es decir, no viene en el BCL. Por tanto en el equipo de desarrollo donde esté realizando la aplicación necesito importar o instalar estas librerías.

Mi duda es si estás librerías también ¿se tienen que instalar en los ordenadores donde se vaya a ejecutar la aplicación o no es necesario, sino que simplemente copiando el exe generado en los ordenadores de los usuarios será suficiente?.




Muchas gracias.
Daimroc.
  #9 (permalink)  
Antiguo 31/07/2009, 13:08
 
Fecha de Ingreso: octubre-2000
Mensajes: 1.692
Antigüedad: 23 años, 6 meses
Puntos: 19
Respuesta: diferencias entre ADO de visual basic 6.0 y ADO .net

Hola.

Si la pc tiene el frameworks 3.5 ya viene el driver de oracle(vs2008). De todas formas siempre va a ser mejor que generes un instalador que lo podes hacer facilmente con el v.s 2008:
http://www.onglasses.net/Default.aspx?id=1265
__________________
PD: Con amor, fe, amor a Dios y amistad podemos hacer un mundo mejor!!!!
  #10 (permalink)  
Antiguo 01/08/2009, 01:05
 
Fecha de Ingreso: octubre-2006
Mensajes: 53
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: diferencias entre ADO de visual basic 6.0 y ADO .net

Pues estoy usando el vs 2008 express.

VS 2008 creo que trabaja ya con la versión 3.5 del framework, pero cuando intento crear un objeto connection de Oracle, no existe, y por tanto no puedo crearlo.

Es decir, según la web de Oracle, para utilizar los objetos de Oracle, debo primero importar el espacio de nombres Oracle.DataAccess.Client. Esto no lo puedo hacer sin instalar nada, porque no pertenece al framework 3.5. Tengo que instalar el ODP.NET, que son las librearías para .NET que desarrolla Oracle.

También he intentando añadir las referencias a ese espacio de nombres, pero no hay ninugno que empiece por Oracle. Lógico si aún no he instalado el ODP.NET.

Por tanto me imagino que aún teniendo en los ordenadores de los usarios el framework 3.5 no podrán utilizar la aplicación si no se incluyen las librearías del ODP.NET. La solución como dices es crear un instalador que las instale en caso de necesitarse.

Sin embargo esta aplicación se quería dejar en una unidad de red, de tal modo que solo se tuviera una copia y sería ésta la que ejecutarían los usaurios. De modo que la solución del instalador en principio no es la mejor opción en este caso. Ya que es una aplicación bastante sencilla, se quería simplemente dejar en una unidad de red y que los usuarios tuvieran un acceso directo a la aplicación. De ahí la idea de copiar y pegar, en lugar de pensar en un instalador.

Pero si no tengo instalador, tendría que renunciar a poder utilizar el ODP.NET y tendría que utilizar el proveedor de microsoft que es más genérico, porque para Oracle no tiene uno concreto.

He leído que en la versión 4.0 sí lo incluirá, pero que no lo seguirá desarrollando y lo catalogará como obsoleto, aconsejando utilizar otro proveedor. De modo que se estará en la misma situación, se tendrá que usar el ODP.NET de Oracle y se deberían incluir las librerías en un instalador.

Quizás en este caso debería pensar en utilizar el proveedor OleDB genérico de .NET, y ver si su rendimiento es el esperado. Si no, tendría que probar con ODP.NET y pensar en crear una instalador.

¿Son ciertas estas suposiciones? ¿Realmente el proveedor de oracle viene en el framework 3.5 y no lo he visto o no lo he sabido utilizar?. Porque el único proveedor de Oracle que he visto ha sido el proporciona Oracle mediante ODP.NET y se debe instalar aparte, y por tanto sería necesario instalarlo en los ordenadores que fueran a utilizar la aplicación (incluyéndolo en un instalador, por ejemplo).



EDITO: leyendo un poco más me ha dado la impresión que quizás la versión express no tenga el proveedor de oracle de Microsoft. ¿Puede ser este el problema, que uso la express?




Gracias.
Daimroc.

Última edición por daimroc; 01/08/2009 a las 02:42
  #11 (permalink)  
Antiguo 01/08/2009, 08:04
 
Fecha de Ingreso: octubre-2000
Mensajes: 1.692
Antigüedad: 23 años, 6 meses
Puntos: 19
Respuesta: diferencias entre ADO de visual basic 6.0 y ADO .net

Hola, como te va.

No, si usas el Oledb vas a perder muchas ventajas de usar el driver exclusivo de Oracle. Es lo mismo que que en ves de usas el Sqlclient de sql server usaras oledb, ya que entre otras cosas el rendimiento y velocidad decaen.

Lo que tenes que hacer para podrer usar el namespace de Oracle es agregar una referencia y buscar system.data.OracleClient. Para agregar una nueva referencia haces clic derecho sobre tu proyecto y selecciona Add reference (agregar nueva referencia) y buscas el system.data.oracleclient como te comento.

Así vas a poder usar el driver de oracle
__________________
PD: Con amor, fe, amor a Dios y amistad podemos hacer un mundo mejor!!!!
  #12 (permalink)  
Antiguo 01/08/2009, 12:01
 
Fecha de Ingreso: octubre-2006
Mensajes: 53
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: diferencias entre ADO de visual basic 6.0 y ADO .net

Hola:

pues sí intenté buscar la referecencia a System.Data.oracleclient pero no la había encontrado. Pensé que la versión express de VS 2008 tenía ciertas limitaciones (y más siendo temas de Oracle), pero no al menos en este caso.

Ya suponía que la eficiencia de usar OleDB sería menor que si usaba el del cliente oracle, aunque tampoco le di mucha importancia en este caso porque la aplicación es muy sencilla en temas de consultas.

Otra duda que tengo por curiosidad es, ¿mejor usar el oracleClient o conexión ODBC?. Porque entiendo que el proveedor ODBC, hace uso del origen de datos configurado en windows, el cual usa ya el proveedor de oracle. ¿Tendría diferencias de rendimiento? ¿Cuál sería mejor?.



Muchas gracias.
Daimroc.
  #13 (permalink)  
Antiguo 02/08/2009, 18:36
 
Fecha de Ingreso: octubre-2000
Mensajes: 1.692
Antigüedad: 23 años, 6 meses
Puntos: 19
Respuesta: diferencias entre ADO de visual basic 6.0 y ADO .net

Hola, como te va.

Mira, yo lo que tengo entendido que siempre es mejor usar el cliente nativo que trae .net para oracle en este caso, por lo que te comente que estan preparados para trabajar exclusivamente con un tipo de base de datos. Pero como nunca usado ODBC no te sabría decir con total seguridad. De última yo lo que solía hacer es armarme una base bien cargadita, con pocas tablas, pero con montones de registro cargados y le temes unos select en duro con SELECT * (sin especificar los nombre de los campos) y lo unis a otras tablas, y ves como se va comportando y listo, te sacas la duda

Por otro lado si vos decis que por ahí no es tan tan crítico tu sistema y si pensas que en el futuro no se va a poner más compleja tu aplicación le podes meter para delante con lo que te resulte más comodo.
Cualquier cosa avisa.
__________________
PD: Con amor, fe, amor a Dios y amistad podemos hacer un mundo mejor!!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:30.