#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));