【问题标题】:Passing parameters to Dapper Select query for Oracle database将参数传递给 Oracle 数据库的 Dapper Select 查询
【发布时间】:2017-10-18 11:02:15
【问题描述】:

我正在尝试将参数传递给 Dapper 以在 Oracle 数据库中进行选择查询,但不知何故,它不适用于“:”标识符。

使用字符串连接可以正常工作:
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();

它应该使用相同的字符串,但第二个示例没有返回任何内容。

【问题讨论】:

    标签: asp.net oracle select model-view-controller dapper


    【解决方案1】:

    当你传递一个参数时,你不需要在你的值周围加上引号。相反,这会导致失败,因为引擎将搜索包含由文字引号括起来的值的列。
    只需使用纯文本

     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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-06
      • 2021-07-30
      • 2019-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多