c# - 如何使用 sql 参数进行选择查询?

标签 c# sql-server

我需要根据对一组记录的“喜欢”匹配来获取记录,

我使用的以下查询不起作用。有谁知道查询有什么问题吗?

 sqlCommand.CommandText =String.Format("SELECT * FROM Customer" +
                " WHERE (Name like @Name)","'%" +searchString.Trim()+"%'");
            sqlCommand.Parameters.AddWithValue("Name", searchString);

此查询未获取所需的记录。

运行上述代码段时出现以下错误:

Must declare the scalar variable "@Name".

最佳答案

这样会发生什么?

sqlCommand.CommandText = "SELECT * FROM Customer WHERE Name LIKE @Name;";
sqlCommand.Parameters.AddWithValue("@Name", "%" + searchString + "%");

您也可以按如下方式编码,以避免首先出现所有通配符格式:

sqlCommand.CommandText = "SELECT * FROM Customer WHERE CHARINDEX(@Name, Name) > 0;";
sqlCommand.Parameters.AddWithValue("@Name", searchString);

如果您要坚持以不安全的方式进行操作,至少将 searchString 中的任何单引号加倍,例如

searchString.Replace("'", "''")

关于c# - 如何使用 sql 参数进行选择查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10291417/

相关文章:

c# - 使用 JsonPath C# 获取/设置对象

c# - Math.Pow 给出 "Cannot implicitly convert type ' double' to 'float' "error

c# - Entity Framework 6.1.1 禁用模型兼容性检查

sql-server - 如何通过计费 API 查找 Azure 使用记录中的唯一性

sql-server - 如何从 SQL 中的 xml 列中获取元素的所有值

c# - 找不到类型或命名空间名称 'VibrationDevice'

c# - 休息不允许在 IIS 8.5 : error 405 中放置

sql - 以 SQL Server 最快的方式插入/更新 5000 万条记录

sql-server - 使用 EF Core、Docker 和系统分配标识从 Web 应用程序访问 Azure SQL

python - 使用备用 unixODBC 安装