System.Data.SqlClient.SqlException: 'गलत सिंटैक्स पास'। ''।

Nov 24 2020

मैं SQL के साथ .net Core Wep API के बारे में कुछ करने की कोशिश करता हूं। मुझे '' '' के पास गलत सिंटैक्स मिला है।

i आपी के लिए डाकिया का उपयोग करें और कोशिश करें कि वह आए या नहीं।

appsettings.json कोड में;

{
  "ConnectionStrings": {
    "EmployeeAppCon": "Data Source=.;Initial Catalog=EmployeeDB; Integrated Security=true"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*"
}

और ı ने कोशिश की, पोस्ट विधि लेकिन ı को ओवरडेड विधि के साथ यहां एक त्रुटि मिली;

[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");

        }

मेरी गलती कहां है कृपया मुझे बहुत धन्यवाद देने में मदद करें?

जवाब

2 MarcGravell Nov 24 2020 at 08:41

यह एसक्यूएल में समवर्ती के साथ एक समस्या है; लंबी कहानी छोटी: कभी एसक्यूएल में इनपुट नहीं करना; सही संचालन और अधिक की तरह है:

update dbo.Department
set DepartmentName=@name
where DepartmentId=@id

कहाँ @nameऔर @idपैरामीटर हैं।

फिर आप myCommand.Parameters.Add(...)उन दो मापदंडों और उनके नाम / मूल्यों को शामिल करने के लिए उपयोग करेंगे , और उपयोग ExecuteNonQuery(नहीं ExecuteReader) करेंगे।

तथापि! हमारे लिए पूरी मेहनत करने के लिए डैपर (मुक्त आदि) प्राप्त करना बहुत सरल होगा , फिर हम बस कर सकते हैं:

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 {...}यहां मूल्यों के साथ हमारे नामित मापदंडों को परिभाषित करता है।