19

我正在尝试执行 SQL 查询,例如

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

这在普通 SQL 中工作得很好,但是当我在 C# 中使用 System.Data.SQLite 时,它​​只适用于文字,而不是参数,例如

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

这不返回任何结果。

4

2 回答 2

31

你不能那样做。参数必须是完整的值——它不仅仅是对 SQL 的字符串替换。你可以这样做:

string sel = "SELECT * FROM [TABLE] WHERE hostname LIKE @host";
...
command.Parameters.AddWithValue("@host", "%myhostname%");
于 2010-12-01T22:52:22.073 回答
15

最简单的方法是使用 '||'

利用 :

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

代替:

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

我已经在这里回答了

于 2015-08-30T14:25:24.523 回答