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

Dudas que me estan quitando el sueño..con dataset tipados datareaders..

Estas en el tema de Dudas que me estan quitando el sueño..con dataset tipados datareaders.. en el foro de .NET en Foros del Web. Hola a todos me he registrado unica y exclusivamente para que alguien pueda ayudarme con estas dudas que atormentan mi vida. Os explico: Tenía realizado ...
  #1 (permalink)  
Antiguo 29/09/2006, 02:37
 
Fecha de Ingreso: septiembre-2006
Mensajes: 13
Antigüedad: 17 años, 7 meses
Puntos: 0
Dudas que me estan quitando el sueño..con dataset tipados datareaders..

Hola a todos me he registrado unica y exclusivamente para que alguien pueda ayudarme con estas dudas que atormentan mi vida. Os explico:
Tenía realizado un proyecto en visual studio 2005 que funcionaba perfectamente, para la conexion con la BD usaba una clase hecha por mi (no soy amante de usar los diseñadores) donde me definia mis metodos (abrir conexion, cerrar,cargar datatable...). Dicha clase funciona, pero funciona solo para conexiones a SQLSERVER, es decir que si el dia de mañana quiero hacer otro tipo de conexion tendría que rehacerlo...Fue entonces cuando empecé a hacer listados y descubrí la facilidad que me brindaban para ello los dataset tipados.. así que use uno en mi proyecto. Empecé a ver tambien que con un dataset tipado puedes hacer que un proyecto cambie de forma sencilla la base de datos a la que se conecta, es decir puedes pasar de sql server a excel en diseño y cambiando poca cosa (creo yo). Y me dije a mi mismo "joder que cojonudo", si los dataset tipados me brindan esta facilidad me olvido de mi clase de acceso a datos(que solo me vale para sqlserver) y me centro en los ds tipados. Y modifiqué parte del código para ello, sin embargo, Y AQUI EMPIEZA EL PROBLEMA, en mi proyecto tambien uso datareaders los cuales cargo gracias a un metodo de MI clase, con lo que no he conseguido nada. Ya que la facilidad de cambio de BD que me dan los dataset tipados me lo quitan los datareaders que siguen tirando de mi metodología. En estos momentos me encuentro en la duda de :
1.- quitar los datareaders de mi proyecto y usar solo dataset, así por ejemplo , en vez de cargar un combo con un datareader hacerlo ahora todo con dataset.
2.- Cortame las venas

Como veis mi duda será sencilla para muchos porque es una mera cuestion de metodología pero para mi que soy nuevo en estas cosas, me parece complicadisimo.
Muchas gracias.
  #2 (permalink)  
Antiguo 29/09/2006, 04:14
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Bien, en principio, comentarte, que si defines bien tu clase de acceso a datos, no tendría que verse afectada por un cambio del GBD. Creo que deberías revisarla.

Segundo: usar un dataset para rellenar un datareader, como bien dices es una barbaridad, es decir, consumir esa cantidad de espacio en memoria para hacer una simple lectura a la Bd, nunca te saldrá rentable. Hay que combinar datasets con datareader, dependiendo de su uso.
  #3 (permalink)  
Antiguo 29/09/2006, 04:29
 
Fecha de Ingreso: septiembre-2006
Mensajes: 13
Antigüedad: 17 años, 7 meses
Puntos: 0
Pues hombre, mi clase de acceso a datos ya te digo que esta hecha para acceder a sqlserver, si que he visto en la pagina de microsoft una forma de hacerlo con objetos genericos, para que te pueda valer para todo tipo de Bd, sin embargo no se yo si eso funcionará muy bien con BD como mysql..

Lo que realmente me mata, es ver que lo que el dataset tipado me da (poder cambiar de BD de forma sencilla en diseño), el uso de datareader me lo quita(no puedo configurar el acceso a datos con la facilidad del dataset)
  #4 (permalink)  
Antiguo 29/09/2006, 04:39
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
La idea de hacer las capas es esa, que sólo con unos cambios en la clase de acceso a datos se pueda cambiar de GBD sin complicaciones.

¿Ponme un ejemplo de problema que te presenta el datareader?
  #5 (permalink)  
Antiguo 29/09/2006, 05:04
 
Fecha de Ingreso: septiembre-2006
Mensajes: 13
Antigüedad: 17 años, 7 meses
Puntos: 0
Umm, no me presenta ningun problema, de hecho ahora mismo me funciona bien..A ver si consigo explicarme bien: el problema es que si mañana el cliente me dice que la BD ya no es sql server sino MySql yo tendría que:
1.- Modificar la conexion del dataset tipado -> tarea sencilla en mi opinión.

Y, ADEMAS!!:

2.- Modificar mi clase de acceso a BD donde tengo por ejemplo la funcion cargar listbox() que me carga un listBox mediante un datareader. El tema es que como mi clase la he hecho para sqlserver, con estas propiedades:

Public mConexion As SqlConnection = New SqlConnection("server=****;database=****;uid=servi dor;pwd=pass ")
'Command
Public mComando As SqlCommand
'Adapter
Public mAdaptador As SqlDataAdapter

Debería de modificar tambien este archivo... Es decir, el cambio de BD me implica tener que cambiar 2 conexiones, una para el dataset tipado y otra para el datareader.

Por contra, sino usase datareader (lo cual seria una tonteria,pero bueno) tan solo tendria que configurar la conexion del dataset tipado..

Osease, que en mi opinión aqui hay algo raro que se me escapa y que evidentemente estoy haciendo mal..

DIOS QUE MAL ME EXPLICO

Última edición por barakaldes; 29/09/2006 a las 05:16
  #6 (permalink)  
Antiguo 30/09/2006, 21:57
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
el problema es que si mañana el cliente me dice que la BD ya no es sql server sino MySql yo tendría que:
... para eso existen los design patterns, puedes bajar los EL y echarle un ojo al modelo de datos que hay tanto para framework 1.1 como 2.0, ya no importa quien sea tu cliente de BD porque solo tendrías que editar tu XML y listo, tu código se queda intacto, claro que tienes que hacer ciertas implementaciones ya que por default son para sql server y oracle.

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #7 (permalink)  
Antiguo 01/10/2006, 13:12
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Cita:
2.- Modificar mi clase de acceso a BD donde tengo por ejemplo la funcion cargar listbox() que me carga un listBox mediante un datareader. El tema es que como mi clase la he hecho para sqlserver, con estas propiedades:

Public mConexion As SqlConnection = New SqlConnection("server=****;database=****;uid=servi dor;pwd=pass ")
Si la cadena de conexión,la defines p.ej. en un xml o en el constructor, etc..., en vez, de en cada función, sólo tendrás que cambiar la cadena, en vez de todas las funciones que usen datareaders.
  #8 (permalink)  
Antiguo 02/10/2006, 01:17
 
Fecha de Ingreso: septiembre-2006
Mensajes: 1
Antigüedad: 17 años, 7 meses
Puntos: 0
Yo creo que te tienes que hacer una clase generica de acceso a datos con una granja de objetos o fabrica no se muy bien como se llama, con un case y que dependiendo del Proveedor de datos, del SGBD te devuelva un DataReader diferente entonces tu tienes eso ahi que no necesitas retocar y solo utilizas los metodos que te devuelven un DataReader y no te importa de que tipo sea ya que todos funcionan igual....
En mi opinion esa seria la mejor solucion.......
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 08:20.