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

C# (sharp), Duda con Connection.Open() y .Close() para acceder a una base de datos

Estas en el tema de C# (sharp), Duda con Connection.Open() y .Close() para acceder a una base de datos en el foro de .NET en Foros del Web. Por que en el siguiente codigo: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C sharp: Ver original OleDbCommandBuilder MiBase = new OleDbCommandBuilder ( ) ; DataTable Tabla = new ...
  #1 (permalink)  
Antiguo 24/07/2010, 16:03
Avatar de jose_desa  
Fecha de Ingreso: marzo-2010
Mensajes: 19
Antigüedad: 14 años, 1 mes
Puntos: 0
Exclamación C# (sharp), Duda con Connection.Open() y .Close() para acceder a una base de datos

Por que en el siguiente codigo:

Código C sharp:
Ver original
  1. OleDbCommandBuilder MiBase=new OleDbCommandBuilder();
  2. DataTable Tabla=new DataTable();
  3. DataAdapter adaptador=new DataAdapter();
  4. OleDbConnection conector=new OleDbConnection();
  5. conector.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source= "+Application.StartupPath+@"\base.mdb";
  6.  
  7. void conectar()
  8. {
  9. adaptador.SelectCommand.Connection=conector;
  10. conector.open(); //<--------------------- se abre la coneccion
  11. adaptador.SelectCommand.CommandText="Select * from Tabla";
  12. MiBaseDataAdapter=adaptador;
  13. Tabla.Clear();
  14. adaptador.Fill(Tabla);
  15. conector.close(); //<------------------------ se cierra la coneccion
}
si yo quito las instruccion de que estan señanadas con //<---
que se supone que abren y cierran la coneccion a la base de datos no afecta aparentemente en nada puedo seguir viendo los registros que estan en mi tabla en acess, Modificandolos, agregando nuevos registros, eliminandoloes, etc. ??


tambien lo hice de esta forma y tampoco afecta

Código C sharp:
Ver original
  1. String archivodb = ("Provider=Microsoft.Jet.OLEDB.4.0;; Data Source="+ Application.StartupPath+@"\Base\BaseDatos.mdb");
  2. string sql = "Select Num_control, Nombre, Apellido_Paterno, Apellido_Materno, Especialidad  From Alumnos ORDER BY Num_control ASC";
  3. string respsql = "Select Num_control, Nombre, Apellido_Paterno, Apellido_Materno, Especialidad  From Alumnos ORDER BY Num_control ASC";
  4. OleDbConnection conector;
  5. OleDbDataAdapter adaptador;
  6.         OleDbCommandBuilder actualizardb;
  7.         DataTable tabla;
  8.         DataRow renglontabla;
  9.  
  10. public void conectar()//funcion que se manda a llamar cada vez que se nesesite acceder a la base de datos
  11.         {
  12.             conector = new OleDbConnection(archivodb);
  13.          //   conector.Open();
  14.             adaptador = new OleDbDataAdapter(sql, conector);
  15.             actualizardb = new OleDbCommandBuilder(adaptador);
  16.             tabla = new DataTable();
  17.         //conector.Close();
  18.            
  19.         }

Por que no es nesesario tener las instruccion .open() y .close() ?
Si la razon es por que no se nesesita quisiaera ver si por favor me podrian decir en que casos si se nesesita abrir el objeto OleDbConnection

De antemano muchas gracias

Estoy programando en Visual Studio 2008 en C sharp y mi base de datos esta hecha en Access 2003.

Última edición por jose_desa; 25/07/2010 a las 14:06 Razón: complementar
  #2 (permalink)  
Antiguo 26/07/2010, 02:56
 
Fecha de Ingreso: febrero-2010
Mensajes: 17
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: C# (sharp), Duda con Connection.Open() y .Close() para acceder a una base

Es posible que hayas abierto antes la conexión?? a veces ocurren este tipo de cosas, de todas formas échale un vistazo al constructor porque es posible que por defecto te abra la conexión.

En cuanto a cerrarla depende del ámbito. "Si la conexión OleDbConnection está fuera de ámbito, no se cierra. Por consiguiente, es preciso cerrar explícitamente la conexión llamando a Close o Dispose, o utilizando el objeto OleDbConnection en una instrucción Using."

http://msdn.microsoft.com/es-es/library/system.data.oledb.oledbconnection(VS.80).aspx
  #3 (permalink)  
Antiguo 27/07/2010, 16:58
(Desactivado)
 
Fecha de Ingreso: diciembre-2009
Mensajes: 44
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: C# (sharp), Duda con Connection.Open() y .Close() para acceder a una base

Cuando ocupas un DataAdapter y le das el comando y luego el "fill", el adaptador solo es el que se encarga de laburar la conexion por si mismo.

El connection.open() y connection.close() lo empleas cuando vos mismo haces alguna operacion con la base de datos de forma explicita. por ejemplo

SqlCommand comando = new SqlCommand();
comando.commandText="select * from tabla";
comando.connection=conexion;
CONEXION.OPEN();
comando.executeNonQuery();
CONEXION.CLOSE();

en estos casos si es necesario que vos mismo abras la conexion.

Saludos
  #4 (permalink)  
Antiguo 27/07/2010, 17:05
 
Fecha de Ingreso: octubre-2000
Mensajes: 1.692
Antigüedad: 23 años, 6 meses
Puntos: 19
Respuesta: C# (sharp), Duda con Connection.Open() y .Close() para acceder a una base

Para evitar este problema te conviene usar los "using"

using(SqlConnection xcon = new SqlConnection(xCadena))
{

// aca tu codigo
}

una vez que se sale de la última llave desaparece la variable xcon cerrándose el recurso de la conexion y así no tenes que preocuparte de cerrar la conexion
__________________
PD: Con amor, fe, amor a Dios y amistad podemos hacer un mundo mejor!!!!

Etiquetas: access, csharp, oledb, bases-de-datos
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 18:21.