如何将通配符添加到从 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 + "%'

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