consulta dapper - corrección para el error "Cita no cerrada cerca de ..."

c# dapper

Pregunta

Esta consulta funciona; es decir, devuelve los resultados esperados:

var r = sql.Query<T>("select * from TableName where Name = '" + name + "'");

pero, si uno de los valores de 'nombres' contiene una apostrofia (que es verdadera), se emite una excepción '{' Sintaxis incorrecta cerca de 'Recursos'. \ r \ nComilla cerrada después de la cadena de caracteres ''. "} ' - en un intento de solucionar ese problema , mi consulta ya no devuelve ningún resultado; pero debería.

Intenté cambiar el código de varias maneras, pero no se devuelven resultados con ninguno de los siguientes cambios:

var r = sql.Query<T>("select * from TableName where Name = '@name'", new { name });

o

var args = new DynamicParameters(name);
var r = sql.Query<T>("select * from TableName where Name = '@name'", args);

o

var args = new DynamicParameters(); args.AddDynamicParams(new { name });
var r = sql.Query<T>("select * from TableName where Name = '@name'", args);

o

var args = new DynamicParameters(); args.Add("@name", name);
var r = sql.Query<T>("select * from TableName where Name = '@name'", args);

Esto es probablemente algo trivial que simplemente aún no he comprendido el concepto de ... pero estoy a punto de haber pasado demasiado tiempo tratando de resolverlo, de ahí la pregunta.

Respuesta aceptada

Usar un parámetro es el camino correcto a seguir. A pesar de todo no quiere poner el valor en la propia consulta como lo hizo en su primer fragmento. Sin embargo, has puesto el @name entre comillas, lo que significa que está siendo tratado como un literal de cadena ... está buscando un valor de nombre exactamente @name lugar del valor del parámetro @name . Usted quiere:

var r = sql.Query<T>("select * from TableName where Name = @name", new { name });

(Esa es probablemente la forma más simple de pasar los parámetros, aunque los otros enfoques también deberían funcionar).

Ahora no he usado Dapper, pero eso es lo que esperaría ...



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué