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

我想在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(); } } 

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

提前致谢

只需将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。

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

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

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

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

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