问题
I am trying to do an SQL query such as
SELECT * FROM [TABLE] WHERE hostname LIKE '%myhostname%';
This works fine in plain SQL, but when I use System.Data.SQLite in C#, it only works with a literal, not a parameter, such as
string sel = "SELECT * FROM [TABLE] WHERE hostname LIKE '%@host%'";
...
command.Parameters.AddWithValue("@host", "myhostname");
This returns no results.
回答1:
You can't do that. The parameters must be complete values - it's not just a string substitution into the SQL. You could do this instead:
string sel = "SELECT * FROM [TABLE] WHERE hostname LIKE @host";
...
command.Parameters.AddWithValue("@host", "%myhostname%");
回答2:
Easiest way to do this is to use '||'
Use :
const string qry = "SELECT SiteNum FROM WorkTable WHERE WTName LIKE @wtName || '%' ";
Instead Of:
const string qry = "SELECT SiteNum FROM WorkTable WHERE WTName LIKE @wtName%";
I have already answered here
来源:https://stackoverflow.com/questions/4329953/c-sharp-sqlite-parameterized-select-using-like