如何在 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
块。
在连接 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
块。