Estoy usando C# y .NET 3.5. Necesito generar y almacenar algunas instrucciones de inserción de T-SQL que se ejecutarán más adelante en un servidor remoto.Creando sentencias SQL seguras como cadenas
Por ejemplo, tengo una serie de empleados:
new Employee[]
{
new Employee { ID = 5, Name = "Frank Grimes" },
new Employee { ID = 6, Name = "Tim O'Reilly" }
}
y necesito terminar con una matriz de cadenas, como esto:
"INSERT INTO Employees (id, name) VALUES (5, 'Frank Grimes')",
"INSERT INTO Employees (id, name) VALUES (6, 'Tim O''Reilly')"
estoy mirando algo de código que crea las instrucciones de inserción con String.Format, pero eso no se siente bien. Consideré usar SqlCommand (esperando hacer something like this), pero no ofrece una manera de combinar el texto de comando con los parámetros.
¿Basta con reemplazar comillas simples y construir una cadena?
string.Format("INSERT INTO Employees (id, name) VALUES ({0}, '{1}')",
employee.ID,
replaceQuotes(employee.Name)
);
¿De qué debería preocuparme cuando hago esto? La fuente de datos es bastante segura, pero no quiero hacer demasiadas suposiciones.
EDITAR: Solo quiero señalar que en este caso, no tengo una SqlConnection ni ninguna forma de conectarme directamente a SQL Server. Esta aplicación en particular necesita generar sentencias SQL y ponerlas en cola para que se ejecuten en otro lugar; de lo contrario, estaría usando SqlCommand.Parameters.AddWithValue()
AddWithValue es genial (lo uso a menudo), PERO puede sufrir la conversión de tipo implícita incorrecta si no se usa con cuidado. –