Параметр URI в ASP.NET

#asp.net-mvc #api #parameter-passing

#asp.net-mvc #API #передача параметров

Вопрос:

Я пытаюсь извлечь данные из базы данных SQL Server, используя API, в котором я передаю две даты в качестве параметров для фильтрации данных, но каждый раз, когда я это делаю, возникает исключение.

Это моя функция get:

 public class ValuesController : ApiController {  SqlConnection con = new SqlConnection(@"server =PC-UXYTHBB; database=TEST; User ID=sa;Password=pwdpwd");   // GET api/values   public String Get(string d1, string d2)  {  SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM [dbo].[EMPLOYEE] where [birthdate] BETWEEN @d1 and @d2 ", con);   DataTable dt = new DataTable();  da.Fill(dt);   if (dt.Rows.Count gt; 0)  {  return JsonConvert.SerializeObject(dt);  }  else  {  return "No data found !!";  } }  

Это конфигурация маршрута

 public class RouteConfig {  public static void RegisterRoutes(RouteCollection routes)  {  routes.IgnoreRoute("{resource}.axd/{*pathInfo}");  routes.MapRoute(  name: "Default",  url: "{controller}/{action}/{id}",  defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }  );  } }  

Комментарии:

1. Какое исключение он выбрасывает? Добавьте сведения об исключении в сообщение.

Ответ №1:

Вы не отправили параметры в запрос. Вы должны написать такой код

 da = new SqlDataAdapter("SELECT * FROM [dbo].[EMPLOYEE] where [birthdate] BETWEEN @d1 and @d2", con); da.SelectCommand.Parameters.AddWithValue("@d1",Convert.ToDateTime(d1)); da.SelectCommand.Parameters.AddWithValue("@d2",Convert.ToDateTime(d2));