• Domingo 17 de Noviembre de 2024, 19:57

Autor Tema:  Consulta SQL y C#  (Leído 8578 veces)

JaviMarciano

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Consulta SQL y C#
« en: Jueves 18 de Marzo de 2010, 23:42 »
0
Hola tengo un problema con una consulta a una base de datos de SQL desde c#

Para realizar una consulta realizo lo siguiente
Código: C#
  1.  public DataSet Consulta()
  2.         {
  3.             DataSet ds = new DataSet();
  4.             SqlDataAdapter Da = new SqlDataAdapter("sp_Consulta_Personal", con.Conexion);
  5.  
  6.             Da.Fill(ds, "T_Personal");
  7.             return ds;
  8.  
  9.         }
  10.  
Hasta ahí de 10

Utilizo el Procedimiento almacenado:sp_Consulta_Personal
Código: SQL
  1. SET ANSI_NULLS ON
  2. SET QUOTED_IDENTIFIER ON
  3. GO
  4. ALTER PROCEDURE [dbo].[sp_Consulta_Personal]
  5.  
  6. AS
  7. SELECT *
  8.   FROM [Personal].[dbo].[T_Personal]
  9.  
  10.  

 
Pero no se como hacer cuando necesito pasarle un parametro al procedimiento almacenado.
Creo que el SP sería algo ASí:

Código: SQL
  1. SET ANSI_NULLS ON
  2. SET QUOTED_IDENTIFIER ON
  3. GO
  4. ALTER PROCEDURE [dbo].[sp_Consulta_Codigo]
  5.         (@Cod_Producto VARCHAR(50))
  6. AS
  7.  
  8. SELECT
  9.  
  10.       [Nombre]
  11.       ,[Descripcion]
  12.       ,[PrecioVenta]
  13.  
  14.   FROM [Base].[dbo].[T_Productos]
  15.  
  16. WHERE Cod_Producto=@Cod_Producto
  17.  
  18.  

pero como le paso el parámetro que necesita el SP????

eltruhanero

  • Miembro activo
  • **
  • Mensajes: 85
    • Ver Perfil
Re: Consulta SQL y C#
« Respuesta #1 en: Viernes 19 de Marzo de 2010, 20:20 »
0
Hola no lo compile pero seria algo así:

Código: C#
  1.  
  2. public DataSet Consulta()
  3.         {
  4.             DataSet ds = new DataSet();
  5.             string connectionString = "";
  6.             SqlConnection conn = new SqlConnection(connectionString);
  7.             conn.Open();
  8.  
  9.             SqlCommand cmd = new SqlCommand("sp_Consulta_Personal",conn);
  10.             cmd.CommandType = CommandType.StoredProcedure;
  11.             cmd.Parameters.AddWithValue("nombre_parametro","valor_parametro");
  12.  
  13.             SqlDataAdapter Da = new SqlDataAdapter(cmd);
  14.             Da.Fill(ds, "T_Personal");
  15.  
  16.             return ds;
  17.         }
  18.  
  19.  

JaviMarciano

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Re: Consulta SQL y C#
« Respuesta #2 en: Viernes 19 de Marzo de 2010, 20:42 »
0
Cita de: "eltruhanero"
Hola no lo compile pero seria algo así:

Código: C#
  1.  
  2. public DataSet Consulta()
  3.         {
  4.             DataSet ds = new DataSet();
  5.             string connectionString = "";
  6.             SqlConnection conn = new SqlConnection(connectionString);
  7.             conn.Open();
  8.  
  9.             SqlCommand cmd = new SqlCommand("sp_Consulta_Personal",conn);
  10.             cmd.CommandType = CommandType.StoredProcedure;
  11.             cmd.Parameters.AddWithValue("nombre_parametro","valor_parametro");
  12.  
  13.             SqlDataAdapter Da = new SqlDataAdapter(cmd);
  14.             Da.Fill(ds, "T_Personal");
  15.  
  16.             return ds;
  17.         }
  18.  
  19.  

excelente es justo lo que quería hacer anda perfecto!muchas gracias
ahora cual es la diferencia de hacerlo de esa forma y la sig:
Código: C#
  1.  
  2.  DataSet ds = new DataSet();
  3.             SqlDataAdapter Da = new SqlDataAdapter("Select...         ", con.Conexion);
  4.             Da.Fill(ds, "T_Personal");
  5.             return ds;
  6.  

donde paso directamente la cadena con la instrucción SQL

eltruhanero

  • Miembro activo
  • **
  • Mensajes: 85
    • Ver Perfil
Re: Consulta SQL y C#
« Respuesta #3 en: Viernes 19 de Marzo de 2010, 21:46 »
0
Hola, por el lado de resultados es lo mismo.

Lo primero que se me ocurre es que te inyecten codigo sql: http://es.wikipedia.org/wiki/Inyecci%C3%B3n_SQL
Por eso siempre es preferible usar SqlParameter.

Ademas de que si precisas cambiar la cadena "SELECT...." tendrías que recompilar el codigo...bueno a menos que la pongas en algun archivo de configuracion aunque no me parece adecuado.

Por el lado de performance me imagino es igual.

Saludos! Daniel.

JaviMarciano

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Re: Consulta SQL y C#
« Respuesta #4 en: Viernes 19 de Marzo de 2010, 22:39 »
0
Cita de: "eltruhanero"
Hola, por el lado de resultados es lo mismo.

Lo primero que se me ocurre es que te inyecten codigo sql: http://es.wikipedia.org/wiki/Inyecci%C3%B3n_SQL
Por eso siempre es preferible usar SqlParameter.

Ademas de que si precisas cambiar la cadena "SELECT...." tendrías que recompilar el codigo...bueno a menos que la pongas en algun archivo de configuracion aunque no me parece adecuado.

Por el lado de performance me imagino es igual.

Saludos! Daniel.

ok Daniel se te Agradece mucho la ayuda!