es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo crear una cadena de consulta SQL dinámica y parametrizada en C#

Estoy intentando guardar una serie de registros que he almacenado en una lista concurrente dentro de mi Function App en una base de datos de SQL Server con valores parametrizados, uno de los cuales es una columna encriptada (no estoy seguro si es relevante).

Actualmente, estoy iterando sobre cada registro y extrayendo los valores, parametrizándolos y guardándolos en la base de datos; haciendo esto para cada registro. Sin embargo, según entiendo, esto es altamente ineficiente y se me ha dicho que crear una cadena única con los valores parametrizados de cada registro y luego ejecutar esa cadena única como consulta de SQL Server sería más eficiente.

¿Podría alguien explicarme cómo podría lograr algo así o si estoy equivocado?

¡Gracias!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Usar una sentencia preparada con múltiples parámetros es una forma eficiente de insertar múltiples filas de datos en una base de datos de SQL Server. Este enfoque reduce la cantidad de consultas ejecutadas en el servidor y mejora el rendimiento.

    Para usar este enfoque, primero construya una cadena que contenga los marcadores de posición para cada parámetro. Por ejemplo, si tiene una tabla con columnas llamadas “Columna1”, “Columna2” y “Columna3”, y desea insertar valores en ellas, puede construir una cadena con marcadores de posición para los valores:

    INSERT INTO MyTable (Column1, Column2, Column3) VALUES (@Value1, @Value2, @Value3);
    

    Dentro de su aplicación de función de Azure, utilice un StringBuilder para construir una cadena que incluya los marcadores de posición para los datos que desea insertar:

    StringBuilder sb = new StringBuilder();
    foreach (Record r in Records)
    {
        sb.Append("INSERT INTO MyTable (Column1, Column2, Column3) VALUES ")
            .Append(string.Format("('{0}', '{1}', '{2}');", r.Value1, r.Value2, r.Value3)));
    }
    

    Observe que “StringBuilder” es el objeto que desea utilizar para concatenar la cadena en una sola cadena. Además, string.Format es una forma útil de facilitar la codificación de valores en su cadena. Tenga en cuenta que, como se mencionó anteriormente, siempre debe preferirse el uso de sentencias preparadas por motivos de rendimiento y seguridad.

    Una vez que tenga su cadena lista, puede ejecutarla como una sola consulta en su base de datos de SQL Server.

    ¡Espero que esta explicación haya sido útil!

Comments are closed.