C # SQLite Параметризованный выбор с помощью LIKE - PullRequest
14 голосов
/ 02 декабря 2010

Я пытаюсь сделать запрос SQL, например

SELECT * FROM [TABLE] WHERE hostname LIKE '%myhostname%';

Это прекрасно работает в простом SQL, но когда я использую System.Data.SQLite в C #, он работает только с литералом, а не с параметром, таким как

string sel = "SELECT * FROM [TABLE] WHERE hostname LIKE '%@host%'";
...
command.Parameters.AddWithValue("@host", "myhostname");

Результаты не возвращаются.

Ответы [ 2 ]

23 голосов
/ 02 декабря 2010

Вы не можете этого сделать.Параметры должны быть полными значениями - это не просто подстановка строк в SQL.Вы можете сделать это вместо:

string sel = "SELECT * FROM [TABLE] WHERE hostname LIKE @host";
...
command.Parameters.AddWithValue("@host", "%myhostname%");
6 голосов
/ 30 августа 2015

Самый простой способ сделать это - использовать '||'

Использование:

const string qry = "SELECT SiteNum FROM WorkTable WHERE WTName LIKE @wtName || '%' ";

Вместо:

const string qry = "SELECT SiteNum FROM WorkTable WHERE WTName LIKE @wtName%";

Я уже ответил здесь

...