C# - 如何从数据库连接和查询并返回JsonResult

时间:2017-07-13 21:41:56

标签: c# json api razor model-view-controller

我有一个关于显示表的问题是带控制器和视图的.cshtml。我试图在ItemController.cs中返回一个JsonResult,我想知道如何访问我的数据库并根据查询返回数据。

query = Select * from myFunction(ID)
using SqlConnection sqlConn = new SqlConnection("connectionString")
       {
           using (SqlCommand cmd = new SqlCommand(query, sqlConn)
           {
                sqlConn.Open();
                DataTable dt = new DataTable();
                dt.Load(cmd.ExecuteReader());
            }
        }

这是连接到我的数据库的常规设置吗?我尝试了这个,但我的dt变量显示为{}。此后,为了返回MVC JsonResult,我使用:

System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
        List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
        Dictionary<string, object> row;
        foreach (DataRow dr in dt.Rows)
        {
            row = new Dictionary<string, object>();
            foreach (DataColumn col in dt.Columns)
            {
                row.Add(col.ColumnName, dr[col]);
            }
            rows.Add(row);
        }
        string json = serializer.Serialize(rows);
        return new JsonResult { Data = json, ContentType = "application/json" };

是否有更好的方法可以做到这一点/我上面的连接哪里出错?

谢谢!

1 个答案:

答案 0 :(得分:0)

这是低级编程,不推荐。 我建议使用Entity框架,然后使用newtonsoft进行序列化。

public ActionResult GetAll()
{
    using (var db=new YourModel())
    {
     List<YourType> res=db.tabelX.Where(x=>condition).ToList();
     string output = JsonConvert.SerializeObject(res);
     //or
     return Json(res, JsonRequestBehavior.AllowGet);
    }
}