如何在 MVC 中使用 MySqlDataReader 查看数据?

how can I view data using MySqlDataReader in MVC?

在连接 class.cs 中输入我的连接字符串后,Open.Connection 和 Close.Connection 方法,我创建了以下方法:

public void LibriList(Libro lista)
        {
            if (this.OpenConnection() == true)
                try
                {

                    string query = "SELECT * FROM libri_schema.libri";
                    MySqlCommand cmd = new MySqlCommand(query, connection);
                    MySqlDataReader rdr = cmd.ExecuteReader();
                    List<Libro> model = new List<Libro>();
                    while (rdr.Read())
                    {
                        var details = new Libro();
                        details.Titolo = rdr["Titolo"].ToString();
                        details.Autore = rdr["Autore"].ToString();
                        details.Editore = rdr["Editore"].ToString();
                        details.ISBN = rdr["ISBN"].ToString();
                        /* details.Prezzo = rdr["Prezzo"].ToString();
                         details.Pagine = rdr["Pagine"].ToString();
                         details.Quantità = rdr["Quantità"].ToString();*/
                        model.Add(details);
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    this.CloseConnection();
                }

这是我的控制器:

[HttpGet]
public ActionResult Libri()
{
    return View();
}

//public ViewResult Registrationorm()
[HttpPost]
public ViewResult Libri(Libro Lista)
{
    if (ModelState.IsValid)
    {
        var connection = new Connection();
        connection.LibriList(Lista);
        return View("Libri");
    }
    else
    {

        ViewBag.ErrorMessage = "Nessun Libro disponibile";

    }
    return View();
}

这是一个模型:

        public class Libro
        {
            public string Titolo { get; set; }
            //string Autore da cambiare in Lista
            public string Autore { get; set; }
            public string Editore { get; set; }
            public string ISBN { get; set; }
            public int Pagine { get; set; }
            public decimal Prezzo { get; set; }
            public int Quantità { get; set; }


       

在mySQLWorkbench我用一些书创建了一个table,我现在如何通过视图查看它?

您必须 return 方法中的数据,以便将其提供给视图。例如,更改方法的 return 类型:

public List<Libro> LibriList(Libro lista)

和return数据:

List<Libro> model = new List<Libro>();
while (rdr.Read())
{
  //...
}
return model; // <--- here

您可能还需要向您的方法添加更多 return 语句或 throw 语句,具体取决于逻辑。例如,如果此 return 在条件内,那么当条件不满足时,您需要一些默认值。在这些情况下你做什么取决于你。您可以 return 一些默认值(如空列表),return null,或者如果该条件不应发生,则可能会抛出异常。

从方法中 returning 后,将该数据提供给视图:

var connection = new Connection();
var model = connection.LibriList(Lista);
return View("Libri", model);

然后在您的 Libri 视图中,您将在视图顶部声明模型类型:

@model List<Libro>

并且可以在视图中的任何位置使用该类型的 Model 属性。 (包含在 MVC 教程和示例中。)


顺便说一句,这是一个 anti-pattern:

catch (Exception ex)
{
    throw ex;
}

语句 throw ex 正在从异常中剥离有用的信息,这些信息可以帮助您诊断和解决错误。如果您需要 re-throw 原始异常 as-is,只需单独使用 throw;。但是,如果 catch 没有做任何事情 而只是 re-throw 原始异常,请完全摆脱 catch 块。