c# - C# SQL 传递变量进行查询
问题描述
我目前正在编写一个搜索功能来降低值名称
这是我的查询:
"SELECT Company.Name, Company.Reg FROM Company WHERE Name LIKE '%''" + Name + "''%'";
这是功能:
public object CompanySearch(string Name)
{
using (PCE)
{
SqlConnection con = new SqlConnection(constr);
try
{
List<CompanySearch> cm = new List<CompanySearch>();
SqlCommand command = new SqlCommand();
command.Connection = con;
"SELECT Company.Name, Company.Reg FROM Company WHERE Name LIKE '%''" + Name + "''%'";
con.Open();
//process the sql execute etc
}
}
}
我阅读名称的方式是否正确?
我没有进行测试' '
,但是我收到如下异常消息:
"ExceptionMessage": "Incorrect syntax near 'Mysearch'.",
更新
SELECT Company.Name, Company.Reg
FROM Company
WHERE CompanyName LIKE '%MySearch%';
这是我在 SSMS 中执行的代码,它成功了。但是它不适用于我的 C#
解决方案
首先,您应该始终避免“手动构建”您自己的查询。这是进行 SQL 注入的最佳方式 ( https://en.wikipedia.org/wiki/SQL_injection )
其次,您应该在查询中使用 Parameter
SqlCommand cmd = new SqlCommand("SELECT Company.Name, Company.Reg WHERE Name LIKE @companyName", connection);
cmd.Parameters.Add("@companyName", SqlDbType.NVarChar).Value = Name;
但是在 2020 年,您应该使用 ORM 而不是构建自己的查询。这对于节省时间和避免错误要好得多。看看 EF Core ( https://docs.microsoft.com/fr-fr/ef/ ) 或 Dapper ( https://stackexchange.github.io/Dapper/ ), ...
推荐阅读
- reactjs - 反应分享。抛出错误 TypeError: Super expression must be null or a function, not undefined 当试图在 require 中使用它时
- c - 如何让编译器警告我缺少返回值?
- python - 在 Django 中为新帖子保存 category_id
- android - 第二个活动的 Anko 布局未显示
- automation - 尝试使用 autohotkey 对本地 html 文件执行某些处理时出现“rpc 服务器不可用”
- javascript - React-Native & Redux “动作必须是普通对象。为异步函数使用自定义中间件”
- javascript - 下一个图像功能在调用时不显示
- node.js - ionic 3 中的 socket.io 客户端不工作?
- python - python f'string 在 pd.Series.map 函数中不起作用
- php - 无法在后端设计配置中更改 magento2 主题