如何将通配符添加到从 TextBox 获取数据的 c# 中的 sql 字符串
How to add a wildcard to a sql string in c# that takes data from a TextBox
我想将通配符 %
添加到 TextBox
字符串的末尾,但我不确定语法。这是我的代码。
OleDbCommand cmd = new OleDbCommand("SELECT * FROM Patient WHERE FirstName LIKE '"+tbSearch.Text+"'",conn);
tbSearch
后我要加通配符
应该是这样的:
SELECT * FROM Patient WHERE FirstName LIKE '"+tbSearch.Text+"%'
但我强烈建议您始终使用 parameterized queries to avoid SQL Injection。像这样:
OleDbCommand cmd = new OleDbCommand("SELECT * FROM Patient WHERE FirstName LIKE @Search",conn);
cmd.Parameters.Add("@Search", OleDbType.VarChar).Value = tbSearch.Text + "%";
正确的方法是使用像这样的参数化查询
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),字符串连接会导致将无效文本传递给数据库解析器,并随后出现语法错误异常。
永远不要使用 Select *
,指定列名 - 如果有人使用索引器,这将避免麻烦,稍后在列上获取 changed/added/deleted。
始终使用参数化 SQL 或存储过程或 LINQ
最后,回答你的问题很简单,你需要记住通配符也是你想要发送到 SQL 引擎的实际查询的一部分,所以它会是
`FirstName LIKE '"+ tbSearch.Text + "%'
==> 您只需在变量后添加 % - 在本例中是文本框的文本。
我想将通配符 %
添加到 TextBox
字符串的末尾,但我不确定语法。这是我的代码。
OleDbCommand cmd = new OleDbCommand("SELECT * FROM Patient WHERE FirstName LIKE '"+tbSearch.Text+"'",conn);
tbSearch
后我要加通配符
应该是这样的:
SELECT * FROM Patient WHERE FirstName LIKE '"+tbSearch.Text+"%'
但我强烈建议您始终使用 parameterized queries to avoid SQL Injection。像这样:
OleDbCommand cmd = new OleDbCommand("SELECT * FROM Patient WHERE FirstName LIKE @Search",conn);
cmd.Parameters.Add("@Search", OleDbType.VarChar).Value = tbSearch.Text + "%";
正确的方法是使用像这样的参数化查询
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),字符串连接会导致将无效文本传递给数据库解析器,并随后出现语法错误异常。
永远不要使用
Select *
,指定列名 - 如果有人使用索引器,这将避免麻烦,稍后在列上获取 changed/added/deleted。始终使用参数化 SQL 或存储过程或 LINQ
最后,回答你的问题很简单,你需要记住通配符也是你想要发送到 SQL 引擎的实际查询的一部分,所以它会是
`FirstName LIKE '"+ tbSearch.Text + "%'
==> 您只需在变量后添加 % - 在本例中是文本框的文本。