admin

System.Data.SqlClient.SqlException:'。'附近的语法不正确。

sql

我尝试一些有关.Net Core Wep API和SQL的知识。我在’。’‘附近有错误的语法。

谋使用邮递员的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");

        }

我的错在哪里,请多多帮助我。


阅读 537

收藏
2021-07-01

共1个答案

admin

这很可能是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 {...}此处使用值定义了我们的命名参数。

2021-07-01