【发布时间】:2020-11-24 08:33:59
【问题描述】:
我尝试使用 SQL 来了解 .Net Core Wep API。我在'.''附近得到了不正确的语法。'
我使用邮递员作为 api 并尝试它是否带有 json。
在 appsettings.json 代码中;
{
"ConnectionStrings": {
"EmployeeAppCon": "Data Source=.;Initial Catalog=EmployeeDB; Integrated Security=true"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}
我尝试了 get, post 方法,但我在这里使用 Uptade 方法出现错误;
[HttpPut]
public JsonResult Put(Department dep)
{
string query = @"
Uptade dbo.Department set
DepartmentName='"+dep.DepartmentName+@"'
where DepartmentId="+dep.DepartmentId+@"
";
DataTable table = new DataTable();
string sqlDataSource = _configuration.GetConnectionString("EmployeeAppCon");
SqlDataReader myReader;
using (SqlConnection myCon = new SqlConnection(sqlDataSource))
{
myCon.Open();
using (SqlCommand myCommand = new SqlCommand(query, myCon))
{
myReader = myCommand.ExecuteReader();
table.Load(myReader); ;
myReader.Close();
myCon.Close();
}
}
return new JsonResult("Uptade Successfull");
}
我的错在哪里,请帮帮我,非常感谢?
【问题讨论】:
-
在查询中使用参数来解决您的问题以及任何注入问题。这个词也是更新而不是更新
-
部门名称可以包含单引号和大量的SQL。这也容易发生 SQL 注入。
-
非常小,但是:
new JsonResult("Uptade Successfull")[原文如此] 很奇怪...因为:那不是 JSON -
(只是添加:除了连接导致错误的位,并为您打开 SQL 注入 - 它也会导致 i18n/l10n 问题(特别是日期和数字),并且是次优的查询计划重用;所以:基本上“总是使用参数”:)