如何将通配符添加到c#中的sql字符串中,该字符串从TextBox

时间:2016-03-17 16:50:17

标签: c# sql oledb

我想将通配符%添加到我TextBox字符串的末尾,但我不确定语法。这是我的代码。

OleDbCommand cmd = new OleDbCommand("SELECT * FROM Patient WHERE FirstName LIKE '"+tbSearch.Text+"'",conn);

tbSearch之后我想添加通配符

3 个答案:

答案 0 :(得分:2)

应该是这样的:

SELECT * FROM Patient WHERE FirstName LIKE '"+tbSearch.Text+"%'

但我强烈建议您始终使用parameterized queries来避免SQL Injection。像这样:

OleDbCommand cmd = new OleDbCommand("SELECT * FROM Patient WHERE FirstName LIKE @Search",conn);
cmd.Parameters.Add("@Search", OleDbType.VarChar).Value = tbSearch.Text + "%";

答案 1 :(得分:2)

正确的方法是使用像这样的参数化查询

OleDbCommand cmd = new OleDbCommand("SELECT * FROM Patient WHERE FirstName LIKE @name",conn);
cmd.Parameters.Add("@name", OleDbType.VarWChar).Value = tbSearch.Text + "%";
OleDbDataReader reader = cmd.ExecuteReader();
......

使用参数对于避免Sql注入非常重要,但也会因字符串连接而导致细微错误。如果您的tbSearch包含带有单引号的名称(例如O' Brian),则字符串连接会导致无效文本传递给数据库解析器,并且会出现语法错误异常。

答案 2 :(得分:0)

  • 永远不要使用Select *,指定列名称 - 如果有人使用索引器,这将避免麻烦,以后稍后会更改/添加/删除列。

  • 始终使用参数化SQL或存储过程或LINQ

  • 最后,回答你的问题很简单,你需要记住,通配符也是你要发送给SQL引擎的实际查询的一部分,所以它将是

  

`FirstName LIKE'“+ tbSearch.Text +”%'

==>您只需在变量后面添加% - 在本例中为文本框的文本。