Argumentos Objeto por referencia o por valor ?

22/03/2007 - 14:37 por Diego ® M Romero | Informe spam
Saludo

1. Que es mejor, para pasar un argumento tipo
System.data.sqlclient.sqlconnection (abierto)
a una función; por valor o por referencia ?

o en la función definir una variable System.data.sqlclient.sqlconnection y
volver a conectarse ?

2. Tengo la idea de crear una clase de conexiones, que sea generica, es
decir que pueda utilizar
tanto objetos sqlclient como OLEDB, y ODBC

Hay unas interfaces de conexiones y comandos, pero no se si es mejor
utilizar las clases para cada proveedor
o convertir de estas interfaces a cada proveedor, con la función CType


Espero me puedan dar alguna idea

Gracias

________________________________
Diego M Romero
 

Leer las respuestas

#1 Federico A. Colli
22/03/2007 - 21:02 | Informe spam
Hola.

1. Sólo por referencia. Los parametros que heredan de Object
(basicamente los no primitivos) solo se pueden pasar por referencia.
Si deseas simular "por valor" como dices deberias crear nuevas
conexiones y que la las devuelva, sin guardar las referencias a estas.
Una u otra opcion depende del diseño de la aplicacion, por no es lo
mismo mantener una conexion abierta durante toda la ejecucion que
abrir conexiones a medida que necesitas. Esta ultima alternativa es
para la que esta optimizada la tecnología "desconectada" de ADO.NET,
como ser DataSet y demas.
Si utilizas objetos del tipo DataReader si necesitas mantener abierta
la conexion.

2. Realmente necesitas esa funcionalidad? esa pregunta te da la
respuesta. Particularmente cuando inicio el diseño de un sistema
siempre pienso en flexibilidad, y en principio me gusta la idea de
hacer ciertas cosas genericas, pero luego te das cuenta que realmente
no lo necesitas. En resumen, si la probabilidad de utilizar diferentes
tecnologías de base de datos es alta entonces si haz algo generico, o
en vez de generico sobreescribe metodos para que te devuelva
conexiones de los tipos de BD que pretendes utilizar.


Hay unas interfaces de conexiones y comandos, pero no se si es mejor
utilizar las clases para cada proveedor
o convertir de estas interfaces a cada proveedor, con la función CType



No entiendo. Supongo que te refieres a por ejemplo las clases propias
de SQLServer y Oracle. Estas son las unicas que se proveen hasta la
version 1.1 del framweork, y si deseas utilizar MySQL, Postgre y otras
tienes la alternativa de usar OLEDB o ODBC, pero es recomendable
utilizar el driver de cada proveedor.

Saludos
Federico A. Colli

Preguntas similares