2011-06-15 64 views
-1

我想在Excel中单击“插入”按钮时将数据插入到SQL Server数据库中。使用HTTP从Excel中将数据插入到SQL Server数据库中Post

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

Dim HttpReq As New WinHttp.WinHttpRequest 

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

HttpReq.Send "jsmith112" 

这是我在VS控制器动作代码:

[HttpPost] 
    public ActionResult Insert(string id) 
    { 

     try 
     { 

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

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

这似乎没有工作,任何人都可以引导我完成这个?

在此先感谢

+4

什么不工作?它抛出一个错误?它甚至击中了你的插入方法?失败发生在哪里? – taylonr 2011-06-15 18:44:49

+0

您正在尝试执行HTTPPost *到* SQL Server?那甚至是犹太教? – 2011-06-15 18:47:57

+1

他正在对ASP.NET MVC Web服务执行HTTP POST,后者又使用EF来更新数据库。 – 2011-06-15 20:38:18

回答

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中。休息。

0

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

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

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

在这种情况下,它应该被string id参数拾取。

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

+0

感谢您的帮助埃文, 所以现在我的后面 “插入” 在Excel按钮代码: 昏暗HttpReq作为新WinHttp.WinHttpRequest HttpReq.Open “POST”,“HTTP://本地主机:11121 /学生/插入/“,假 HttpReq.Send”id = jsmith112“ 如何使用Request.InputStream获取发布的数据并将其插入到数据库中? – user793468 2011-06-15 22:36:49

+0

在这种情况下,您将它视为表单数据,因此它应该显示为Request.Form集合的成员。您可能需要使用HttpReq.SetRequestHeader来告诉它将Content-Type头设置为“application/x-www-form-urlencoded” – 2011-06-16 13:31:12

+0

谢谢!再次。现在我可以将数据从Excel发布到ASP.NET MVC Web服务。这里是我的代码:) 分送出数据( 昏暗HttpReq为对象,URL作为字符串 设置HttpReq =的CreateObject( “MSXML2.ServerXMLHTTP”) URL =“HTTP://本地主机:11121 /学生/ POSTDATA/“ HttpReq.Open ”POST“,URL,假 HttpReq.SetRequestHeader ”内容类型“, ”应用程序/ x WWW的形式进行了urlencoded“ HttpReq.Send ”学生= jsmith112“ Debug.Print HttpReq.ResponseText End Sub 现在,我想要有一个ControllerAction“Insert”,它将在SQLServer数据库中插入张贴的数据。我需要做什么来控制这种行为? – user793468 2011-06-16 23:53:09

相关问题