【问题标题】:Insert data in SQL Server database from excel using HTTP Post使用 HTTP Post 从 excel 向 SQL Server 数据库中插入数据
【发布时间】:2011-06-15 18:41:41
【问题描述】:

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

这似乎不起作用,谁能指导我完成这个?

提前致谢

【问题讨论】:

  • 什么不起作用?它会抛出错误吗?它甚至击中了您的插入方法吗?故障发生在哪里?
  • 您正在尝试对 SQL Server 进行 HTTPPost ?这甚至是犹太洁食吗?
  • 他正在向 ASP.NET MVC Web 服务发送 HTTP POST,而后者又使用 EF 更新数据库。

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


【解决方案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 中实际使用“插入”。休息。

【讨论】:

    【解决方案2】:

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

    执行此操作的更好方法是将其作为 url 编码的表单数据发送(因此帖子正文将是 'id=jsmith112'),或者将请求更改为 GET(或 PUT,如果你想要正确的 RESTful)并点击这个 URL:

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

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

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

    【讨论】:

    • 感谢 Evan 的帮助,所以现在我在 Excel 中“插入”按钮后面的代码是:Dim HttpReq As New WinHttp.WinHttpRequest HttpReq.Open "POST", "localhost:11121/Student/Insert", False HttpReq.Send "id=jsmith112" 如何使用 Request.InputStream 抓取发布的数据并将其插入数据库?
    • 在这种情况下,您将其视为表单数据,因此它应该显示为 Request.Form 集合的成员。您可能必须使用 HttpReq.SetRequestHeader 告诉它将 Content-Type 标头设置为“application/x-www-form-urlencoded”
    • 谢谢!再次。现在我可以将数据从 Excel 发布到 ASP.NET MVC Web 服务。这是我的代码: Sub SendData() Dim HttpReq As Object, url As String Set HttpReq = CreateObject("MSXML2.ServerXMLHTTP") url = "localhost:11121/Student/PostData" HttpReq.Open "POST", url, False HttpReq.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded" HttpReq.Send "Student=jsmith112" Debug.Print HttpReq.ResponseText End Sub 现在,我想要一个 ControllerAction "Insert" 来插入发布的数据SQLServer 数据库。为此,我需要对控制器执行什么操作?
    • 你已经在上面给出了一个控制器动作。代码没有击中它吗?你能调试到控制器动作吗?
    • 以下行出现错误:“student.AddToStudents(id);”错误消息:错误:“STU.Models.StudentEntities.AddToStudent(STU.MODELS.Student)”的最佳重载方法匹配有一些无效参数。是因为我在“AddToStudent”而不是“Entity”中传递了一个字符串吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    • 2012-01-31
    相关资源
    最近更新 更多