我想将通配符%
添加到我TextBox
字符串的末尾,但我不确定语法。这是我的代码。
OleDbCommand cmd = new OleDbCommand("SELECT * FROM Patient WHERE FirstName LIKE '"+tbSearch.Text+"'",conn);
tbSearch
之后我想添加通配符
答案 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 +”%'
==>您只需在变量后面添加% - 在本例中为文本框的文本。