SQLite使用用户输入c#

时间:2017-10-21 05:11:54

标签: c# .net sqlite

我有一个包含1个表的数据库,该表有1列保存我的文件监视器。我希望用户能够搜索他们选择的文件扩展名,但是很难让它正常工作。我可以查询所有文件扩展名,但是当我尝试将用户输入用作变量时,似乎无法正常工作。 (还使用通配符进行搜索)。我的问题主要是只有select语句。(或者我认为。)

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"]);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您没有将参数设置为查询。此外,您需要将通配符与查询文本中的参数分开。 试试这个:

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"]);
        }
    }
}