Вставка данных в базу данных SQL Server из Excel с использованием HTTP Post - PullRequest
0 голосов
/ 15 июня 2011

Я хочу вставить данные в базу данных SQL Server, когда нажимаю кнопку «Вставить» в Excel.

Данные находятся в ячейках A2 и B2, и вот код для кнопки «Вставить» в Excel:

Dim HttpReq As New WinHttp.WinHttpRequest

HttpReq.Open "POST", "http://localhost:11121/Student/Insert/", False

HttpReq.Send "jsmith112"

Вот мой код действия Controller в VS:

 [HttpPost]
    public ActionResult Insert(string id)
    {

        try
        {

            student.AddToStudents(id);
            student.SaveChanges();

            return RedirectToAction("Index");
        }
        catch
        {
            return View();
        }
    }

Кажется, это не работает, кто-нибудь может подсказать мне закончить это?

Спасибо заранее

Ответы [ 2 ]

1 голос
/ 16 июня 2011

Просто измените POST на

"http://localhost:11121/Student/Insert/" + id

и затем сопоставьте маршрут

    routes.MapRoute(
        "InsertStudent",
        "Student/Insert/{id}",
        new { controller = "Student", action = "Insert", id = "" }
    );

, а затем в вашем контроллере вы можете проверить, пуст ли идентификатор, если нет, то создайте новыйuser

также иногда я делаю что-то вроде этого

    routes.MapRoute(
        "Resource",
        "{resource}/{operation}/{id}",
        new { controller = "Resource", action = "Index", resource = "", operation = "" id = "" }
    );

, и тогда вы можете разобрать, что это за вещи ..

в качестве примечания, и если выделая больше конечных точек для вашего сервиса, вы можете рассмотреть возможность использования GET, POST, PUT, DELETE вместо фактического «Вставить» в URI.REST.

0 голосов
/ 16 июня 2011

Я не думаю, что ваши действия контроллера увидят данные в этом случае.Он не может знать, что отправленный вами «jsmith112» должен соответствовать параметру id строки.Внутри вашего действия контроллера используйте объект Request.InputStream, чтобы получить опубликованные данные и отправить их в базу данных.

Лучший способ сделать это - отправить их как данные формы в кодировке URL (таким образом, тело сообщения будет 'id = jsmith112'), или для изменения запроса на GET (или PUT, если вы хотите быть правильно RESTful) и нажмите этот URL:

http://localhost:11121/Student/Insert/jsmith112

В этомв случае, если он должен быть выбран параметром string id.

Кроме того, поместите точку останова в действие контроллера, чтобы убедиться, что вы действительно выполняете его, затем используйте отладчик, чтобы убедиться, что ваш веб-сервис содержит данныенеобходимо.

...