2017-10-21 81 views
1

我有一个数据库有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"]); 
       } 
      } 
     } 

回答

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