2011-09-22 120 views
10

Dapperを使用して、現在期待された結果を返さない(@pNameパラメータを単一引用符でリテラルテキストとして扱う必要があると思います)Dapperを使用してSQL文のLIKE句をパラメータ化しました

var q = "SELECT * FROM Users WHERE Name LIKE '@pName%'"; 

@pNameは、クエリを実行するときに値を割り当てるためのパラメータです。私は同じようにSQLを構築する場合

物事は仕事:

var q = "SELECT * FROM Users WHERE Name LIKE '" + name + "%'"; 

..しかし、私は、可能な場合のparamを使用することを好むだろう。

私は、次のコードを使用してクエリを実行しています:

o = _cn.Query<User>(q, new { pName = new DbString { Value = name, IsFixedLength = false, Length = 25, IsAnsi = true } }).ToList(); 

私はDapperのを使用して、このことについてだどうすればよいですか?

+2

あなたのような句をエスケープすることを忘れないことを確認してください(答えにコメントを参照) –

答えて

15
SELECT * FROM Users WHERE Name LIKE @pName + '%' 
+3

あなたががあなたのような句をエスケープすることを確認してください:http://stackoverflow.com/questions/439495/tsql-like-escape-clause –

+0

@Sam:良​​い点。 –

+0

サムに感謝します。私はこれに慣れていないので、それを追加します。 – marcusstarnes

関連する問題