我有一个关于显示表的问题是带控制器和视图的.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" };
是否有更好的方法可以做到这一点/我上面的连接哪里出错?
谢谢!
答案 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);
}
}