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)?如果是这样,有更好的方法吗?
如果返回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()
}