System.Data.SqlClient.SqlException: 'गलत सिंटैक्स पास'। ''।
मैं 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");
}
मेरी गलती कहां है कृपया मुझे बहुत धन्यवाद देने में मदद करें?
जवाब
यह एसक्यूएल में समवर्ती के साथ एक समस्या है; लंबी कहानी छोटी: कभी एसक्यूएल में इनपुट नहीं करना; सही संचालन और अधिक की तरह है:
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 {...}यहां मूल्यों के साथ हमारे नामित मापदंडों को परिभाषित करता है।