簡體   English   中英

Web API Restful Service C#執行SQL查詢

[英]Web API Restful Service C# Perform SQL Query

使用網絡api靜態服務。

我有一張叫做測試的表。 主鍵是自動增量。 每行包含一個用戶名和一個測試問題。 該數據庫並未真正進行優化,但不必如此。

因為主鍵只是一個使每行保持唯一的整數,所以有許多行具有重復的用戶名。 這可以。

我希望能夠返回具有匹配用戶名的所有行。

我希望能夠通過URL的獲取請求來做到這一點:www.mywebsite.com/api/tests/{username}

Visual Studio中的默認控制器方法只能通過主鍵進行搜索,以返回一個唯一的結果。

這就像我想要的東西,但是不起作用。 500錯誤。 我也不擅長調試,因此請盡可能向我指出正確的方向,以便我提供更多信息。

    // GET: api/Tests/robert
    [ResponseType(typeof(Test))]
    public async Task<IHttpActionResult> GetTest(string id)
    {
        //This is the default approach that just searches by primary key
        //Test test = await db.Tests.FindAsync(id);

        /*This is roughly what I want. Compiles, but doesn't work.*/

        var query = "SELECT* WHERE id=" + id;
        Test test =  db.Tests.SqlQuery(query, id);
        if (test == null)
        {
            return NotFound();
        }

        return Ok(test);
    }

讓我知道我搞砸了。 我已經為此迷惑了好幾個小時了。 我沒有聲稱自己在這方面特別擅長。

嘗試像這樣聲明你的方法

[RoutePrefix("api")]
public class HisController : ApiController
{
    [HttpGet]
    public HttpResponseMessage Test(string name) {...}
}

另外,我建議您使用實體框架

[RoutePrefix("api")]
public class HisController : ApiController
{
    [HttpGet]
    public HttpResponseMessage Test(string name)
    {
        using (MyEntities bm = new MyEntities())
        {
            var usr = bm.Users.Where(u => u.Name == name ).ToList();

            if (usr.Count() > 0)
                return Request.CreateResponse(HttpStatusCode.OK, new
                {
                    Success = true
                        ,
                    Message = "Total users: " + usr.Count()
                        ,
                    Data = usr
                });

            return Request.CreateResponse(HttpStatusCode.NotFound, new { Success = false, Message = "No users found..." });
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM