【问题标题】:Returning ADO.Net query as JSON array from controller从控制器返回 ADO.Net 查询作为 JSON 数组
【发布时间】:2021-04-09 17:16:02
【问题描述】:

我有以下数据库类,它使用 ADO.NET 连接到没有任何模型的 SQL 数据库。我使用 GetData 方法返回一个序列化的 json 字符串,然后在我的控制器中的 ActionResult 获取请求中转换该字符串,如下所示。问题是我首先从 ADO.NET 查询返回一个 DataTable 对象,然后使用第三方 nuget 包 Newtonsoft 将其序列化为字符串,该包在我的控制器中转换为 json/应用程序类型。有没有办法用更少的步骤或第三方插件来实现这些结果?

当对数据库使用模型方法(例如实体框架)时,我能够使用 Ok() 方法将我的 EF 查询转换为 JSON 格式。这非常简单,但我讨厌保留我永远不会使用的模型的想法,所以我切换到 ADO.NET。我仍在学习 ADO.NET 和 ASP.NET Core,因此感谢您提供任何帮助。

数据库类

        public String GetData(String connectionString, string str, params IDataParameter[] sqlParams)
        {
            int rows = -1;
            DataTable objResult = new DataTable();

            try
            {
                SqlDataReader myReader;

                using (SqlConnection myCon = new SqlConnection(connectionString))
                {
                    myCon.Open();
                    using (SqlCommand myCommand = new SqlCommand(str, myCon))
                    {
                        if (sqlParams != null)
                        {
                            foreach (IDataParameter para in sqlParams)
                            {
                                myCommand.Parameters.Add(para);
                            }
                        } 

                        myReader = myCommand.ExecuteReader();
                        objResult.Load(myReader);

                        myReader.Close();
                        myCon.Close();
                    }
                }
            }
            catch (Exception ex)
            {
            }

            return JsonConvert.SerializeObject(objResult);

        }

控制器:

        public ActionResult DatatableLoad()
        {
            //Since ADO.NET returns a datatable we serialize it first in GetData()
            //We have parameters here just in case we want to use them
            string query = "select * from dbo.UserAccountsTbl WHERE USERNAME=@UserName;";

            var parameters = new IDataParameter[]
            {
                new SqlParameter("@UserName", "SB")
            };

            String jsonResult = db.GetData(connectionString, query, parameters);

            return Content(jsonResult, "application/json");
        }

【问题讨论】:

    标签: asp.net-web-api asp.net-core-mvc asp.net-core-3.1


    【解决方案1】:

    要以 JSON 格式返回查询的输出,您需要这样做:

            return Json(jsonResult, JsonRequestBehavior.AllowGet);
    

    jsonResult 是执行查询的输出列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-24
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多