I need to pass 3 parameters to my API DELETE request. Here is my code what I have try.
TaskModel
public class TaskModel
{
public int DeveloperID { get; set; }
public int ProjectID { get; set; }
public string WorkDate { get; set; }
}
This a controller class. called TaskController
[Route("api/Task")]
public void Delete(TaskModel value)
{
TaskPersistent tp = new TaskPersistent();
tp.deleteTask(value);
}
This is TaskPersistent.class
public void deleteTask(TaskModel task)
{
try
{
string sqlString = "DELETE from devproj WHERE (DeveloperID, ProjectID, WorkDate) = VALUES ('" + task.DeveloperID + "', '" + task.ProjectID + "', '" + task.WorkDate + "')"; // System.NullReferenceException throw
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(sqlString, conn);
cmd.ExecuteNonQuery();
long x = cmd.LastInsertedId;
}
catch (MySqlException x)
{
int errr = x.Number;
Console.WriteLine(errr);
}
}
I consume this API using ARC rest client like this, http://localhost:2731/api/Task?DeveloperID=1&ProjectID=2&WorkDate="2018-03-14"
But when I pass the parameters like this,API thrown exception: 'System.NullReferenceException' in DeleteAPI.dll
(I commented error occurred line in my code). What I did wrong here.
You need to consume this API by posting your TaskModel
as a body for the model binder to work with the way you have your Delete
controller action set up. Alternatively, change the Delete
method parameters to int developerId, int projectId, DateTime workDate
.
[Route("api/Task")]
public void Delete(int developerId, int projectId, DateTime workDate)
{
var taskModel = new TaskModel
{
DeveloperId = developerId,
ProjectID = projectId,
WorkDate = workDate
};
TaskPersistent tp = new TaskPersistent();
tp.deleteTask(taskModel);
}
string sqlString = "DELETE from devproj WHERE (DeveloperID, ProjectID, WorkDate) = VALUES ('" + task.DeveloperID + "', '" + task.ProjectID + "', '" + task.WorkDate + "')"; // System.NullReferenceException throw
This query don't work. SQL delete is :
string sqlString = $"DELETE from devproj WHERE DeveloperID = {task.DeveloperID} AND ProjectID = {task.ProjectID} AND WorkDate = {task.WorkDate}";
And don't forget to check for null value in your model before execute query.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.