SQL服务器查询

时间:2013-07-01 22:00:18

标签: c# sql-server asp.net-mvc-4

我正在尝试查询数据库并在将其作为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),如果是这样,有没有更好的方法呢?

2 个答案:

答案 0 :(得分:0)

如果您返回JsonResult,请使用:

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

如果有帮助,请告诉我。

答案 1 :(得分:0)

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

在尝试回答你的问题时,我也会提出一些建议。

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

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()
}