Saltar al contenido

c# Usando Parámetros.AddWithValue en SqlDataAdapter

El paso a paso o código que hallarás en este artículo es la resolución más eficiente y efectiva que encontramos a tus dudas o problema.

Solución:

los string utilizado para inicializar el SqlDataAdapter se convierte en el CommandText de la propiedad SelectCommand de SqlDataAdapter.
Podrías agregar parámetros a ese comando con este código

da = new SqlDataAdapter("SELECT * FROM annotations WHERE annotation LIKE @search",
                        _mssqlCon.connection);
da.SelectCommand.Parameters.AddWithValue("@search","%" + txtSearch.Text + "%");
  • Primero, elimine la comilla simple alrededor del marcador de posición del parámetro.
  • En segundo lugar, agregue el carácter comodín directamente en el parámetro Valor de AddWithValue

Has pedido usar AñadirConValorpero recuerda que, si bien es un atajo útil, también existen numerosos inconvenientes y todos bien documentados.

  • Primero: ¿Podemos dejar de usar AddWithValue() ya? donde el autor discute cómo AñadirConValor podría devolver resultados erróneos en sus consultas
  • Segundo: Cómo el código de acceso a datos afecta el rendimiento de la base de datos, donde el autor presenta evidencias de fuertes problemas de rendimiento para
    AñadirConValor

Entonces, el mismo código sin AñadirConValor y el uso de la sintaxis de inicializadores de objetos y colecciones podría escribirse como

da = new SqlDataAdapter("SELECT * FROM annotations WHERE annotation LIKE @search",
                        _mssqlCon.connection);
da.SelectCommand.Parameters.Add(new SqlParameter

    ParameterName = "@search",
    Value = "%" + txtSearch.Text + "%",
    SqlDbType = SqlDbType.NVarChar,
    Size = 2000  // Assuming a 2000 char size of the field annotation (-1 for MAX)
);

y, una versión aún más simplificada y de una sola línea de lo anterior es:

da.SelectCommand.Parameters.Add("@search",SqlDbType.NVarChar,2000).Value = "%" + txtSearch.Text + "%";

Usar da.SelectCommand.Parameters.Add() en vez de cmd.Parameters.Add()aquí hay una muestra para tratar con un procedimiento almacenado que toma dos parámetros y el segundo es un parámetro int anulable:

public DataTable GetData(int par1, int? par2)

    using (SqlConnection conn = new SqlConnection(connectionString))
    
        using (SqlDataAdapter da = new SqlDataAdapter())
        
            string sql = "StoredProcedure_name";
            da.SelectCommand = new SqlCommand(sql, conn);
            da.SelectCommand.CommandType = CommandType.StoredProcedure;

            da.SelectCommand.Parameters.Add("@Par1", SqlDbType.Int).Value = par1;
            da.SelectCommand.Parameters.Add("@Par2", SqlDbType.Int).Value = (object)par2?? DBNull.Value;

            DataSet ds = new DataSet();
            da.Fill(ds, "SourceTable_Name");

            DataTable dt = ds.Tables["SourceTable_Name"];

            //foreach (DataRow row in dt.Rows)
            //
            //You can even manipulate your data here
            //
            return dt;
        
    

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *