使用通配符创建参数化MySQL查询

本文关键字:MySQL 查询 参数 创建 通配符 | 更新日期: 2023-09-27 17:59:24

我想使用基于参数的查询填充数据网格。但是,我希望能够输入多个可能包含通配符的参数。但是,以下测试查询不正确。

你知道我哪里错了吗?

SELECT `Customer ID`, `Company Name`, `Address Line 3` FROM XTest.all WHERE `Company Name` LIKE '%'+@Company+'%' ORDER BY `Company Name`;

使用通配符创建参数化MySQL查询

string company = "%" + your_criteria_on_company + "%";
string sql = "SELECT 
                `Customer ID`, `Company Name`, `Address Line 3` 
              FROM XTest.all 
              WHERE 
                `Company Name` LIKE @Company 
              ORDER BY `Company Name`";
SqlCommand sqlCommand = new SqlCommand( sql, dbConnection );
sqlCommand.Parameters.AddWithValue( "@Company", company );
' add more of your code here
' and then
sqlCommand.Prepare();
MySqlDataReader resultSet = sqlCommand.ExecuteReader();

参考

  • SqlParameter AddWithValue文档
  • 在Mysql中使用C#中的Prepared语句

您需要将列名用""双引号括起来(取决于SQL模式的设置)。

请查看此链接并按照@DRapp的回答进行操作。以下是链接:ASP.NET 中的mysql参数化查询

根据答案,您需要使用?而不是@

试试这个:

SELECT `Customer ID`, `Company Name`, `Address Line 3` 
        FROM XTest.all 
        WHERE `Company Name` LIKE  concat('%',? + "Company",'%') 
        ORDER BY `Company Name`;
objCommand.Parameters.AddWithValue("?Company", "CompanyValue");