我尝试使用.Net Core Wep API和SQL。我在'。''附近有错误的语法。
ı使用postman制作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中;在正确的操作更像是:
update dbo.Department
set DepartmentName=@name
where DepartmentId=@id
其中@name
和@id
是参数。
然后,您将使用myCommand.Parameters.Add(...)
包括这两个参数及其名称/值,并使用ExecuteNonQuery
(不是ExecuteReader
)。
然而!让Dapper(免费等)为我们完成所有艰苦的工作会容易得多,那么我们可以这样做:
using var myCon = new SqlConnection(sqlDataSource); // don't even need to open it
myCon.Execute(@"
update dbo.Department
set DepartmentName=@name
where DepartmentId=@id",
new { name = dep.DepartmentName, id = dep.DepartmentId });
其中,new {...}
此处使用值定义了我们的命名参数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句