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

Guardar datos de conexion de la forma más apropiada

Estas en el tema de Guardar datos de conexion de la forma más apropiada en el foro de .NET en Foros del Web. Hola a tod@s, Desde hace un tiempo, estoy guardando la Ruta de la Base de Datos en una variable llamada RutaBD de un módulo, accesible ...
  #1 (permalink)  
Antiguo 04/11/2005, 05:25
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Guardar datos de conexion de la forma más apropiada

Hola a tod@s,
Desde hace un tiempo, estoy guardando la Ruta de la Base de Datos en una variable llamada RutaBD de un módulo, accesible desde cualquier Formulario de la aplicación.
Luego, en los objetos connection de los formularios, les especifico una conexion cualquiera para un MDB, y luego, me voy al código, y en el punto donde se especifica la connectionstring del objeto Connection, le sustituyo la ruta de la BD que tiene por lo siguiente:
...DataSource=" & RutaBD & "...

Pues bien, esto me funciona correctamente. El problema es que si en algún momento determinado te da por acceder al diseño del formulario (que en winforms es bastante a menudo), pues resulta que me pierde los datos de la propiedad connectionstring de los objetos Connection.

Entonces, me pueden decir cómo guardar esa ruta de la BD, o toda la cadena de conexion, de forma que pueda mantenerlo al pasar a la vista diseño?
O cómo evitar que se pierda esa información si hay la forma...
Como hacen ustedes para guardar la cadena de conexion en winforms?

Gracias a tod@s.
Saludos.
__________________
..:: moNTeZIon ::..
  #2 (permalink)  
Antiguo 04/11/2005, 06:05
 
Fecha de Ingreso: agosto-2004
Mensajes: 234
Antigüedad: 19 años, 8 meses
Puntos: 1
Hola¡
Yo utilizo un xml para guardar la cadena de conexion.Es una buena opcion creo yo¡
Saludos¡
  #3 (permalink)  
Antiguo 04/11/2005, 06:40
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
OK. Gracias por responder.

Entiendo, por lo que dices, que guardas la cadena de conexion en un xml, y cuando lo necesitas, lees el xml y recuperas el valor, para asignarselo a la conexion... pero pero pero... todo eso imagino que lo haces en tiempo de ejecución.
Estoy buscando la forma que asignar todas estas propiedades en tiempo de diseño y que no se pierdan al cambiar a la vista diseño.
Si no hay solución, supongo que solo me quedará asignar el valor en tiempo de ejecucion y palante...

Saludos y muchas gracias.
__________________
..:: moNTeZIon ::..
  #4 (permalink)  
Antiguo 04/11/2005, 12:54
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 3 meses
Puntos: 7
IMHO, no tiene sentido guardar la cadena de conexion o la ruta de la BD en un módulo o dentro del código, ya que tendrías que recompilar la aplicación ante cualquier cambio de ésta...; o tienes algún motivo especial para hacer esto?

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #5 (permalink)  
Antiguo 06/11/2005, 06:00
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 20 años, 6 meses
Puntos: 156
pues yo guardo la ruta en un archivo de texto, y la conexión activa la guardo y llamo en una Clase, y no tengo ningún problema de pérdidas. Y en cualquier momento de la aplicación puedes cambiar la ruta.

saludos!
  #6 (permalink)  
Antiguo 06/11/2005, 16:13
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Hola de nuevo,
el caso es que esa variable del Modulo me devuelve el resultado de una funcion que accede a un fichero INI, donde están los datos de configuracion.
Por lo que comentas de recompilar la aplicación, ningún problema, ya que puedo hacer los cambios en el fichero y listo.
Lo unico es el detalle que os comentaba al principio. Al asignar la connectionstring al objeto connection en tiempo de diseño, en la parte de "...Datasource=..." concateno la variable que me construye la ruta, y listo. Compilo y todo correcto. Pero si vuelvo a la parte de diseño por cualquier motivo, se pierde toda esa linea que define la connectionstring.
Por lo que supongo que habrá que asignar la propiedad en el form_load, ya en tiempo de ejecución. Que piensan.

Un saludo!
__________________
..:: moNTeZIon ::..
  #7 (permalink)  
Antiguo 07/11/2005, 16:15
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 3 meses
Puntos: 7
Hmm, supongo que tienes una razon para usar un archivo INI en lugar de un archivo de configuración, pero bueno es otra historia creo...;

Es cierto el caso que mencionas, supongo que será un _bug_ del vs.net...; sólo por curiosidad, por qué motivo quieres asignar la cadena de conexión en tiempo de diseño??

Saludos
PS. Disculpa que sea muy preguntón
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #8 (permalink)  
Antiguo 08/11/2005, 01:07
 
Fecha de Ingreso: enero-2005
Ubicación: Benifaió (Valencia)
Mensajes: 319
Antigüedad: 19 años, 3 meses
Puntos: 0
Serian tan amables de decirme como puedo guardar la cadena de conexion y otros datos en un archivo de configuracion???. Nunca lo he hecho y estaria interesado en aprenderlo para mi aplicación.

Muchas gracias de antemano.
  #9 (permalink)  
Antiguo 08/11/2005, 02:10
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
<configuration>
<appSettings>
<add key="conexion" value="tucadena" />

</appSettings>
</configuration>

y para recuperarla

System.Configuration.ConfigurationSettings.AppSett ings.Item("conexion")
  #10 (permalink)  
Antiguo 08/11/2005, 02:51
 
Fecha de Ingreso: enero-2005
Ubicación: Benifaió (Valencia)
Mensajes: 319
Antigüedad: 19 años, 3 meses
Puntos: 0
Muchas gracias, de paso que ya se utilizarlo, lo probare con otras cosas xD
  #11 (permalink)  
Antiguo 08/11/2005, 06:27
 
Fecha de Ingreso: enero-2005
Ubicación: Benifaió (Valencia)
Mensajes: 319
Antigüedad: 19 años, 3 meses
Puntos: 0
¿Cual es la libreria que debo importar para que funcione??

Es algo de XML no??????
  #12 (permalink)  
Antiguo 08/11/2005, 06:30
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Ninguna, si te das cuenta en:
System.Configuration.ConfigurationSettings.AppSett ings.Item("conexion")

incluyes toda la ruta, porque?? que error te da??
  #13 (permalink)  
Antiguo 08/11/2005, 08:25
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Hola de nuevo,

xknown, la verdad, no tengo ningun motivo especial para utilizar INI. Tengo el algoritmo y lo utilizo desde hace tiempo y me va bien.. Le ves algún inconveniente a utilizar un INI?

Por otro lado, estamos en winforms... Es que puedo tener un web.config en winforms de igual forma que en webforms? Si es así, no lo sabia, en tal caso, también opino que fuera la mejor opcion.

Ah!, y no me molesta en absoluto que seas preguntón, todo lo contrario, a juzgar por las veces que me ayudaste ya

Un saludo.
__________________
..:: moNTeZIon ::..
  #14 (permalink)  
Antiguo 08/11/2005, 08:52
Avatar de HenrydeSousa  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 300
Antigüedad: 19 años, 7 meses
Puntos: 2
Sólo como comentario adicional, los datos de tu cadena de conexion los deberías guardar de forma cifrada en caso de que los coloques en un archivo de texto o en otro tipo de archivos que puedan ser vistos por el usuario.
Saludos...
  #15 (permalink)  
Antiguo 08/11/2005, 09:23
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Hola Henry,
En el caso que comentas, si tuviera que cambiar la cadena por algun motivo, se supone que deberia tener una aplicacion aparte que me genere la nueva cadena encriptada, con el mismo sistema que la aplicación va a desencriptarla y meterla en el fichero de texto?
Como la meto encriptada sino?
Si fuera el caso, ya no me parece tan buena idea...
Se supone que los ficheros de configuración son texto plano que puedes modificar, y a su vez está protegido su acceso por parte de los usuarios, con lo que sería una buena solucion...
Como lo ven.
__________________
..:: moNTeZIon ::..
  #16 (permalink)  
Antiguo 08/11/2005, 10:31
 
Fecha de Ingreso: enero-2005
Ubicación: Benifaió (Valencia)
Mensajes: 319
Antigüedad: 19 años, 3 meses
Puntos: 0
Cita:
Iniciado por Jose_minglein2
Ninguna, si te das cuenta en:
System.Configuration.ConfigurationSettings.AppSett ings.Item("conexion")

incluyes toda la ruta, porque?? que error te da??
Esque nose como hacerlo funcionar, ni donde poner todo eso
  #17 (permalink)  
Antiguo 08/11/2005, 10:34
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Si cambias la cadena deberías ser tú quien les dijese como meterla al usuario (ya encriptada), para que no pueda conocer la autentica (aunque siempre hay formas, tema que ya se ha discutido mil y una veces), p.ej. agregando una opción de configuración en tu aplicación.
Otra opción es utilizar el registro de windows en vez de un .config, ya que ahí tienen que buscar 2 cosas, la clave y el valor (encriptado también), con lo cual doble faena de pirata

Este tema podría ser interminable.jeje
  #18 (permalink)  
Antiguo 08/11/2005, 10:37
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Cita:
Esque nose como hacerlo funcionar, ni donde poner todo eso
Eso lo puedes poner en el evento Load de tu primer formulario y asignarle el valor a una variable de aplicación (por ejemplo en un módulo).
Para agregar el archivo de configuración, le das a agregar nuevo elemento (igual que un form) pero buscar archivo de configuración y pones lo que dije más arriba.

Un saludo
  #19 (permalink)  
Antiguo 08/11/2005, 10:45
 
Fecha de Ingreso: enero-2005
Ubicación: Benifaió (Valencia)
Mensajes: 319
Antigüedad: 19 años, 3 meses
Puntos: 0
Me temo que no funcionara, ya que parece ser que en VB2005 (version final), pone que han cambiado por otro metodo, que ahora mismo no encuentro.

Aunque si que me ha funcionado en VB2003 xD

Muchas gracias
  #20 (permalink)  
Antiguo 08/11/2005, 10:46
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Todavía no he llegado a 2005 pero esperemos que el nuevo método haya sido para mejorar.

Un saludo.
  #21 (permalink)  
Antiguo 08/11/2005, 10:57
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
OK, con lo hablado ya me hago una idea de la historia.

Y esto último que comentais? Ya no hay ficheros de configuración en 2005? O lo que han cambiado es la forma de acceder a ellos?
A ver si alguien sabe algo del tema...

Saludos.
__________________
..:: moNTeZIon ::..
  #22 (permalink)  
Antiguo 08/11/2005, 13:47
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 3 meses
Puntos: 7
Cita:
xknown, la verdad, no tengo ningun motivo especial para utilizar INI. Tengo el algoritmo y lo utilizo desde hace tiempo y me va bien.. Le ves algún inconveniente a utilizar un INI?
No, sino que me parece más natural usar un archivo xml, pero si ya tienes las cosas así, supongo que no hay ningún inconveniente.
Cita:
Por otro lado, estamos en winforms... Es que puedo tener un web.config en winforms de igual forma que en webforms? Si es así, no lo sabia, en tal caso, también opino que fuera la mejor opcion.
Los archivos de configuración se aplican tanto a aplicaciones windows (NombreAplicacion.exe.config) como aplicaciones web.

Cita:
Y esto último que comentais? Ya no hay ficheros de configuración en 2005? O lo que han cambiado es la forma de acceder a ellos?
Lo que ha cambiado es la clase con la que accede al archivo de configuración, ahora es:
System.Configuration.ConfigurationManager

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #23 (permalink)  
Antiguo 08/11/2005, 21:25
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
Veo mas óptimo crear un archivo XML con los datos necesarios de la conexion para despues por código leerlo, en último de los casos si requieres seguridad puedes usar un algoritmo de ecriptamiento como el Rijndael

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

Exentrit - Soluciones SharePoint & Net
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 19:19.