Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/11/2007, 04:28
juancete
 
Fecha de Ingreso: febrero-2007
Mensajes: 69
Antigüedad: 17 años, 3 meses
Puntos: 0
Pregunta Error "Valor de tiempo de espera caducado. El período de tiempo de espera caducó... "

hola, tengo un problema en visual studio 2005, utilizo el sql server que trae integrado y me da el siguiente error "Valor de tiempo de espera caducado. El período de tiempo de espera caducó antes de completar la operación o el servidor no responde".

utilizo para hacer los select un sqldataadapter.fill() y asi lleno la tabla con los datos.

Código:
public class BaseDatos
{
   private SqlConnection _cnx = new SqlConnection();
   private SqlCommand _comando= new SqlCommand();
   private SqlDataAdapter _adap = new SqlDataAdapter();

   public BD()
   {
        _cnx.ConnectionString = "String de conexion.....";
        _comando.Connection = this._cnx;
   }

   public datatable metodoSelect(string consultaSQL)
   {
       datatable tabla=new datatable("datos");
       this._comando.CommandText = consultaSQL;
       this._adap.SelectCommand = this._comando;
       try
       {
            this._adap.Fill(tabla);
            return tabla;
       }
       catch (Exception ex)
       {}                   
   }
}
El utilizar el adapter es el causante del error. Cada vez que hago un select utilizo el metodo metodoSelect(consulta): creo una conexion nueva (al usar el constructor de la clase BaseDatos), asigno la consulta al sqlcommand, asigno el sqlcommand al adapter y con el adapter hago el fill.

El error se da exactamente cuanto inicio la transaccion, modifico una tabla (con otro metodo que no incluyo aki), luego hago una consulta select con metodoSelect(consulta) sobre la tabla modificada (creando una nueva instancia de la clase BaseDatos), al hacer sqldataadapter.fill() para recuperar los datos se produce el timeout. Si hago la consulta sobre una tabla no modificada en la transaccion no se produce el error.

La solucion fue usar para hacer el select la propia instancia de la clase BaseDatos que uso para la transaccion en lugar de crear una nueva. De todas formas alguien podria decirme pq se producia el error? me imagino que podria ser pq en una transaccion mientras no hagas el comit() los datos no quedan fijos entonces el adapter de la nueva conexion se hara un lio.

Última edición por juancete; 07/11/2007 a las 09:36