使用HTTP Post从Excel中插入SQL Server数据库中的数据

时间:2011-06-15 18:41:41

标签: c# asp.net entity-framework excel-vba http-post

当我点击excel中的“插入”按钮时,我想将数据插入SQL Server数据库。

数据在单元格A2和B2中,这里是excel中“插入”按钮背后的代码:

Dim HttpReq As New WinHttp.WinHttpRequest

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

HttpReq.Send "jsmith112"

以下是我在VS中的Controller操作的代码:

 [HttpPost]
    public ActionResult Insert(string id)
    {

        try
        {

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

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

这似乎没有用,有人能指导我完成这个吗?

提前致谢

2 个答案:

答案 0 :(得分:1)

只需将POST更改为

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

然后映射路线

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

然后在您的控制器中,您可以检查id是否为空,如果没有,则创建一个新用户

另外,有时我会做这样的事情

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

然后你可以解析出事情是什么......

作为旁注,如果您为服务制作更多的终点,您可以考虑使用GET,POST,PUT,DELETE而不是在URI中实际使用“插入”。 REST。

答案 1 :(得分:0)

我不认为您的控制器操作会在这种情况下看到数据。它无法知道您发送的'jsmith112'应该对应于字符串id参数。在控制器操作内部,使用Request.InputStream对象来获取发布的数据并将其发送到数据库中。

更好的方法是将其作为url编码的表单数据发送(所以post body将是'id = jsmith112'),或者将请求更改为GET(或PUT,如果你想要正确地RESTful)并点击这个URL:

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

在这种情况下,它应该由字符串id参数拾取。

另外,在控制器操作中放置一个断点以确保实际上是在点击它,然后使用调试器来验证您的Web服务是否具有所需的数据。