Insert data in SQL Server database from excel usin

2020-02-16 05:03发布

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

2条回答
Melony?
2楼-- · 2020-02-16 05:19

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.

查看更多
兄弟一词,经得起流年.
3楼-- · 2020-02-16 05:23

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.

查看更多
登录 后发表回答