ASP.NET - Traer datos de SQL Server

   
Vista:

Traer datos de SQL Server

Publicado por fernando fernandomilans.1996@hotmail.com (19 intervenciones) el 08/09/2017 18:04:46
Hola, podrian darme una mano con este codigo, es que me no se en que me equivoque y en google no encontre nada:

SqlDataReader dr = cmd.ExecuteReader(); EN ESTO ME ESTA PATEANDO, PORQUE CREO QUE ES CUANDO HAGO dr.Close() y lo cambie por todas partes y me sigue pateando, les agradezco mucho!!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
internal static List<Servicio> BuscarMisServicios(List<Servicio> aux)
{
 
    SqlCommand cmd = new SqlCommand();
    SqlConnection cn = Acceder.CrearConexion();
    SqlTransaction trn = null; //TRANSACCION
 
    Acceder.AbrirConexion(cn);
    trn = cn.BeginTransaction();//TRANSACCION
    cmd.Transaction = trn; //TRANSACCION
    cmd.Connection = cn;
 
    foreach (Servicio item in aux)
    {
        cmd.CommandText = @"select evento.* from evento,tiposeventoservicio where
        tiposeventoservicio.nombreservicio=@serv and 
        tiposeventoservicio.nombreevento=evento.nombre";     //ESTO ME LEE BIEN
 
        cmd.Parameters.AddWithValue("@serv", item.nombreServicio);
        try
        {
            SqlDataReader dr = cmd.ExecuteReader();    //ME TIRA ERROR ACA!
            if (dr.HasRows) {  //lee si retorna una o mas filas
 
 
                while (dr.Read())
                {
 
                    Evento ev = CargarEventos(dr);
 
                    item.eventos.Add(ev);
                }
                dr.Close();  //CREO QUE ACA ESTA EL ERROR
            }
 
        }
 
        catch (Exception ex)
        {
 
            System.Diagnostics.Debug.Assert(false, ex.Message);
            trn.Rollback();
            return null;
        }
    //finally
    //{
    //}
 
    }//HASTA ACA VA EL FOREACH
 
   // cn.Close(); //cierro datareader
    trn.Commit(); //termino transaccion
    Acceder.CerrarConexion(cn);
    return aux;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Traer datos de SQL Server

Publicado por Yamil Bracho (1123 intervenciones) el 08/09/2017 18:09:46
Y cual es el mensaje de error que te esta arrojando ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Traer datos de SQL Server

Publicado por fernando (19 intervenciones) el 08/09/2017 18:19:13
Sin-titulo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Traer datos de SQL Server

Publicado por Yamil Bracho (1123 intervenciones) el 08/09/2017 18:30:49
El problema es que estas asignando el SQL a tu command varias veces y agregando el parametro multiples veces asi que saca esas lineas de foreach. tequeadria algo como :

1
2
3
4
5
6
7
8
9
10
cmd.CommandText = @"select evento.* from evento,tiposeventoservicio where
tiposeventoservicio.nombreservicio=@serv and 
tiposeventoservicio.nombreevento=evento.nombre";
cmd.Parameters.AddWithValue("@serv", SqlDbType.varChar);
 
foreach (Servicio item in aux)
{
	cmd.Parameters["@serv"] = item.nombreServicio;
	...
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Traer datos de SQL Server

Publicado por fernando (19 intervenciones) el 08/09/2017 20:11:30
en el cmd.Parameters["@serv"] = item.nombreServicio;
item.nombreServicio me tira "no se puede convertir implicitamente el tipo 'string' en
System.Data.SqlClient.SqlParameter' "
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Traer datos de SQL Server

Publicado por Yamil Bracho (1123 intervenciones) el 08/09/2017 20:26:55
oops!
Falto cmd.Parameters["@serv"].Value = item.nombreServicio;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Traer datos de SQL Server

Publicado por Cesar (18 intervenciones) el 08/09/2017 20:54:39
Solo saca esta linea del for, pon la antes:

cmd.Parameters.AddWithValue("@serv", item.nombreServicio);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Traer datos de SQL Server

Publicado por fernando (19 intervenciones) el 08/09/2017 21:10:45
Perfecto, lo que faltaba era el .value.
Lo de scar el cmd.Parameters.AddWithValue("@serv", item.nombreServicio); no entendi, dices sacar eso fuera del foreach??
porque da error si lo saco, me tira que el item no existe. Gracias, por la mano!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Traer datos de SQL Server

Publicado por Yamil Bracho (1123 intervenciones) el 08/09/2017 21:12:18
Cuan lo tenias en el loop se trataba de agregar varias veces y por eso te decia que ya existia.
Esa instruccion la sacas de foreach y la substituyes por
1
cmd.Parameters.AddWithValue("@serv", SqlDbType.varChar);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad