• Viernes 19 de Abril de 2024, 22:18

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - Johnny Brusko

Páginas: [1]
1
C# / Problemas con parámetros
« en: Viernes 15 de Agosto de 2008, 18:04 »
Tengo un metodo en C# que me devuelve en un DataTable una serie de noticias dependiendo de varios parametros que le paso. El problema es que si utilizo parametros para construir la sentencia sql, me devuelve el DataTable vacio, pero si lo hago con los datos directamente en la sentencia no tengo ningún problema.

Código: Text
  1.  
  2.     //metodo que nos devuelve una tabla con las noticias paginadas
  3.     public DataTable obtenerNoticiasPaginadas(Int32 numeroPagina, String palabra, DateTime fechaInicio, DateTime fechaFin)
  4.     {
  5.         try
  6.         {
  7.             String strSql = "SELECT * FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY fecha DESC) AS RowNumber FROM noticias WHERE (titular LIKE '%@palabra%' OR cuerpo LIKE '%@palabra%') AND fecha BETWEEN @fechaInicio AND @fechaFin) AS noticias WHERE RowNumber BETWEEN (@tamanoPagina * @numeroPagina + 1 - @tamanoPagina) AND (@tamanoPagina * (@numeroPagina + 1) - @tamanoPagina)";
  8.  
  9.             SqlCommand comando = new SqlCommand(strSql, conexion);
  10.             comando.Parameters.AddWithValue("@tamanoPagina", Int32.Parse(ConfigurationManager.AppSettings["paginadoNoticias"]));
  11.             comando.Parameters.AddWithValue("@numeroPagina", numeroPagina);
  12.             comando.Parameters.AddWithValue("@palabra", palabra);
  13.             comando.Parameters.AddWithValue("@fechaInicio", fechaInicio);
  14.             comando.Parameters.AddWithValue("@fechaFin", fechaFin);
  15.             SqlDataAdapter adaptador = new SqlDataAdapter(comando);
  16.  
  17.             DataTable tablaNoticias = new DataTable("Noticias");
  18.  
  19.             conexion.Open();
  20.             adaptador.Fill(tablaNoticias);
  21.             conexion.Close();
  22.  
  23.             return tablaNoticias;
  24.         }
  25.         catch (Exception exc)
  26.         {
  27.             conexion.Close();
  28.             throw exc;
  29.         }
  30.     }
  31.  
  32.  

Si sustituyo en la sentencia sql
Código: Text
  1. LIKE '%@palabra%' OR cuerpo LIKE '%@palabra%'
  2.  
por
Código: Text
  1. LIKE '%ipsum%' OR cuerpo LIKE '%ipsum%'
  2.  
siendo ipsum un texto que hay en la base de datos, el metodo funciona perfectamente.

¿Alguien puede ayudarme a encontrar la luz al final del tunel? ¿Por qué no me funciona con el parametro @palabra?

Páginas: [1]