SQLite选择查询使用用户输入c#
问题描述:
我有一个数据库有1个表,有1列,保持我的文件观察。我希望用户能够搜索他们选择的文件扩展名,但是很难让它正常工作。我可以查询所有文件扩展名,但是当我尝试将用户输入用作变量时,某些东西似乎无法正常工作。 (也使用通配符进行搜索)。我的问题主要仅在select语句中(或者我认为)。SQLite选择查询使用用户输入c#
string str = textBox1.Text.Trim();
query = "SELECT * FROM LOG WHERE ENTRY like '%@str%'";
using (SQLiteCommand cmd = new SQLiteCommand(query, conn))
using (SQLiteDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
listBox1.Items.Add((string)reader["ENTRY"]);
}
}
}
答
您没有将该参数设置为查询。此外,您需要将通配符与查询文本中的参数分开。 试试这个:
string str = textBox1.Text.Trim();
query = "SELECT * FROM LOG WHERE ENTRY like '%' || @str || '%'";
using (SQLiteCommand cmd = new SQLiteCommand(query, conn))
// Might need a different data type here
cmd.Parameters.Add("@str", SQLiteType.Text).Value = str;
using (SQLiteDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
listBox1.Items.Add((string)reader["ENTRY"]);
}
}
}