Insert data in SQL Server database from excel using HTTP Post

拈花ヽ惹草 提交于 2019-11-30 10:07:55

问题


I want to insert data into SQL Server database when I click "Insert" button in excel.

The data is in Cells A2 and B2 and here is the code behind the "Insert" button in excel:

Dim HttpReq As New WinHttp.WinHttpRequest

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

HttpReq.Send "jsmith112"

Here is my code for the Controller action in VS:

 [HttpPost]
    public ActionResult Insert(string id)
    {

        try
        {

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

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

This doesn't seem to be working, could anyone guide me into finishing this?

Thanks in advance


回答1:


Just change the POST to

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

and then map the route

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

and then in your controller you can check if id is empty, if not then make a new user

also, sometimes I do things like this

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

and then you could parse out what the things are..

as a side note and if you were making more end points for your service, you might consider using GET, POST, PUT, DELETE instead of actually having "Insert" in the URI. REST.




回答2:


I don't think your controller action would see the data in this case. It has no way of knowing that the 'jsmith112' you sent should correspond to the string id parameter. Inside of your controller action, use the Request.InputStream object to grab the posted data and send that into the database.

A better way to do this would be to either send it through as url-encoded form data (so the post body would be 'id=jsmith112'), or to change the request to a GET (or a PUT, if you want to be properly RESTful) and hit this URL:

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

In that case it should be picked up by the string id parameter.

Also, put a breakpoint inside the controller action to be sure you're actually hitting it, then use the debugger to verify your web service has the data it needs.



来源:https://stackoverflow.com/questions/6362657/insert-data-in-sql-server-database-from-excel-using-http-post

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!