SQL服务器查询

本文关键字:查询 服务器 SQL | 更新日期: 2023-09-27 18:20:33

我试图在asp.net MVC 4中将数据库作为Json对象传递后,查询数据库并向用户显示信息。

我能想到的通过它的唯一方法如下:

    public JsonResult Search()
    {
            SqlCommand myCommand = new SqlCommand("Select * from table", 
                                                   myConnection);

            SqlDataReader myReader = myCommand.ExecuteReader();
            while (myReader.Read())
            {
                //Col1-7 are lists
                Col1.Add(myReader["Column1"].ToString());
                Col2.Add(myReader["Column2"].ToString());
                Col3.Add(myReader["Column3"].ToString());
                Col4.Add(myReader["Column4"].ToString());
                Col5.Add(myReader["Column5"].ToString());
                Col6.Add(myReader["Column6"].ToString());
                Col7.Add(myReader["Column7"].ToString());
            }
        return Json(new {Col1, Col2, Col3, Col4, Col5, Col6, Col7});
    }

唯一的问题是,我不想为此使用重型客户端,通过这样做,我将数据表保存为一堆列表,而不是将其保存为一个紧凑的数据库。这种方法是否违背了在客户端不保存太多数据的目的(因为我无论如何都不使用SqlServerCe)?如果是这样,有更好的方法吗?

SQL服务器查询

如果返回JsonResult,请使用以下命令:

JsonResult retVal = new JsonResult();
...
retVal.Data = new { col1 = Col1, ....};
return retVal;

如果有帮助,请告诉我。

我不完全理解你的问题。我能说的是,你不想在客户端向用户显示太多信息?

在回答你的问题的同时,我也将给出一些建议。

不要像从控制器中那样进行数据检索。而是使用服务层或存储库来带回数据。假设你想带回数据库中的所有用户,那么我会这样做(只需返回你需要的,剩下的可以省略):

public ActionResult GetAllUsers()
{
     List<User> users = userService.FindAll();
     var result =
          from user
          in users
          select new[]
          {
               user.Id.ToString(),
               user.FirstName,
               user.LastName,
               user.Age.ToString()
          };
          return Json(result, JsonRequestBehavior.AllowGet);
}

您可以将所有这些放入您的UserService类:

SqlCommand myCommand = new SqlCommand("Select * from table",  myConnection);
SqlDataReader myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
     //Col1-7 are lists
     Col1.Add(myReader["Column1"].ToString());
     Col2.Add(myReader["Column2"].ToString());
     Col3.Add(myReader["Column3"].ToString());
     Col4.Add(myReader["Column4"].ToString());
     Col5.Add(myReader["Column5"].ToString());
     Col6.Add(myReader["Column6"].ToString());
     Col7.Add(myReader["Column7"].ToString());
}

将IUserService接口注入控制器:

public class UserController : Controller
{
     private readonly IUserService userService;
     public UserController(IUserService userService)
     {
          this.userService = userService;
     }
     // The rest of your action methods goes here, including GetAllUsers()
}