将参数传递给 Dapper Select 查询 Oracle 数据库
Passing parameters to Dapper Select query for Oracle database
我正在尝试将参数传递给 Dapper 以在 Oracle 数据库中进行 select 查询,但不知何故,它不适用于“:”标识符。
使用字符串连接效果很好:
string req = "SELECT * FROM contact WHERE code_comite = '";
req += user.Comite + "' AND (pers_name LIKE '";
req += name + "%' OR pers_surname LIKE '" + name + "%')";
contacts = db_conn.Query<Contact>(req).ToList();
但不通过 Dapper 参数传递:
string comite = "'" + user.Comite + "'";//e.g. comite = '120'
name = "'" + name + "%'";//e.g. name = 'John%'
contacts = db_conn.Query<Contact>("SELECT * FROM contact WHERE code_comite = :code_comite AND (pers_nom LIKE :search OR pers_prenom LIKE :search)", new { code_comite = comite, search = name }).ToList();
它应该使用相同的字符串,但第二个示例returns我什么都没有。
传递参数时,您无需在值两边加上引号。相反,这会导致失败,因为引擎将搜索包含您的值并用文字引号括起来的列。
只需使用纯文本
string comite = user.Comite;
name = name + "%";
contacts = db_conn.Query<Contact>(@"SELECT * FROM contact
WHERE code_comite = :code_comite
AND (pers_nom LIKE :search
OR pers_prenom LIKE :search)",
new { code_comite = comite, search = name }).ToList();
我正在尝试将参数传递给 Dapper 以在 Oracle 数据库中进行 select 查询,但不知何故,它不适用于“:”标识符。
使用字符串连接效果很好:
string req = "SELECT * FROM contact WHERE code_comite = '";
req += user.Comite + "' AND (pers_name LIKE '";
req += name + "%' OR pers_surname LIKE '" + name + "%')";
contacts = db_conn.Query<Contact>(req).ToList();
但不通过 Dapper 参数传递:
string comite = "'" + user.Comite + "'";//e.g. comite = '120'
name = "'" + name + "%'";//e.g. name = 'John%'
contacts = db_conn.Query<Contact>("SELECT * FROM contact WHERE code_comite = :code_comite AND (pers_nom LIKE :search OR pers_prenom LIKE :search)", new { code_comite = comite, search = name }).ToList();
它应该使用相同的字符串,但第二个示例returns我什么都没有。
传递参数时,您无需在值两边加上引号。相反,这会导致失败,因为引擎将搜索包含您的值并用文字引号括起来的列。
只需使用纯文本
string comite = user.Comite;
name = name + "%";
contacts = db_conn.Query<Contact>(@"SELECT * FROM contact
WHERE code_comite = :code_comite
AND (pers_nom LIKE :search
OR pers_prenom LIKE :search)",
new { code_comite = comite, search = name }).ToList();