首页 > 解决方案 > ASP.NET Web API 连接到 MySQL 数据库

问题描述

我是 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

解决方案


这是我的解决方案:

    [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";
            }
        }
    }

推荐阅读