【问题标题】:ASP.NET Web API Connecting to MySQL DatabaseASP.NET Web API 连接到 MySQL 数据库
【发布时间】:2021-06-02 12:20:15
【问题描述】:

我是 C# 和 .Net 应用程序的新手,但是我试图构建一个 Web API,它从 MySql 数据库中提取数据并在到达该端点时以 JSON 格式显示。

我为此使用MySql.Data.MySqlClient 并打算使用Newtonsoft.JSON 以JSON 格式序列化结果格式。

代码:

    [Route("api/[controller]")]
    [ApiController]
    public class TestController : ControllerBase
    {
        MySqlConnection conn = new MySqlConnection(@"server=localhost;port=3306;database=mysql;username=root;password=[PASSWORD];");

        [HttpGet]
        public string Get()
        {
            MySqlCommand query = conn.CreateCommand();
            query.CommandText = "SELECT * FROM engine_cost LIMIT 100";

            try
            {
                conn.Open();
            }
            catch (MySqlException ex)
            {
                throw ex;
            }

            MySqlDataReader fetch_query = query.ExecuteReader();

            while (fetch_query.Read())
            {
                return fetch_query.ToString(); // Result: "MySql.Data.MySqlClient.MySqlDataReader"
            }

            return "yay"; // Return JSON with Database values
        }
    }

我知道代码有点乱,但我真的不确定如何解决这个问题。

提前致谢

【问题讨论】:

标签: c# asp.net-web-api


【解决方案1】:

这是我的解决方案:

    [Route("api/[controller]")]
    [ApiController]
    public class TestController : ControllerBase
    {
        MySqlConnection conn = new MySqlConnection("server=localhost;port=3306;database=mysql;username=root;password=[PASSWORD];");

        [HttpGet]
        public string Get()
        {
            string sqlCmd = "SELECT * FROM engine_cost LIMIT 100";

            MySqlDataAdapter da = new MySqlDataAdapter("SELECT * FROM engine_cost LIMIT 100;", conn);

            da.SelectCommand.CommandType = CommandType.Text;

            DataTable dt = new DataTable();

            da.Fill(dt);

            if (dt.Rows.Count > 0)
            {
                return JsonConvert.SerializeObject(dt);
            }
            else
            {
                return "no data found";
            }
        }
    }

【讨论】:

  • 为什么使用return JsonConvert.SerializeObject(dt);?您可以使用return dt;,然后 ASP 将创建一个ObjectResult,并且对象结果的默认格式化程序是 JSON,因此它将在响应中将 dt 格式化为 JSON。
猜你喜欢
  • 2022-11-26
  • 1970-01-01
  • 2014-01-19
  • 2016-02-03
  • 1970-01-01
  • 1970-01-01
  • 2019-03-28
  • 1970-01-01
  • 2014-03-15
相关资源
最近更新 更多