2017-10-18 12 views
0

Oracleデータベースの選択クエリに対してDapperにパラメータを渡そうとしていますが、何らかの理由で「:」識別子が使用できません。Dapperにパラメータを渡すOracleデータベースのクエリを選択します。

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

それは同じ文字列を使用する必要がありますが、2番目の例では、私は何も返しません:Dapperのパラメータを渡すと
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();

でもないが:

それは細かい文字列連結を使用して動作します。

答えて

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

ありがとうございますSteve、それは動作します – BadMiscuit