如何发送 sql 查询的结果(行)以在 ASP.NET 中的 table 中查看和显示
How do I send results(rows) of sql query to view and display in table in ASP.NET
我在控制器中有这个方法:
public ActionResult Report()
{
string sql = System.IO.File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "../00002165_Report.sql");
using (NpgsqlConnection con = new NpgsqlConnection("Server=127.0.0.1;Port=5432;User Id=postgres;Password=6060;Database=hotelreal;"))
{
NpgsqlCommand cmd = new NpgsqlCommand(sql, con);
con.Open();
NpgsqlDataReader reader = cmd.ExecuteReader();
try
{
while (reader.Read())
{
Console.WriteLine(String.Format("{0}, {1}, {2}", reader["fName"], reader["lName"], reader["preference"]));
}
}
catch (Exception e)
{
}
}
return View();
}
如您所见,它执行 sql 查询并将结果写入控制台。但是我想做的是这样的:
将查询返回的结果保存在一个数组中。发送此数组以在 table.
中查看和显示它
我该怎么做?
制作一个模型 class 例如 Report 并给出 3 个属性,即 FName、LName 和 Preference
public class Report
{
public String FName {get; set;}
public String LName {get; set;}
public String Preferences {get; set;}
}
从数据库中收集数据并将其分配给列表
List<Report> Reports=new List<Report>();
Report r;
while (reader.Read())
{
r=new Report();
r.FName=reader["fName"];
r.LName=reader["lName"];
r.Preferences=reader["preference"];
Reports.Add(r);
}
最后将列表传递给代码最底部的视图
return View(Reports);
我只是说创建一个模型如下:
public class ReportDataModel
{
public string fName{get; set;}
public string lName{get; set;}
public string preferences{get;set;}
}
接下来在您的控制器中创建该模型的列表,如下所示:
public ActionResult Report()
{
string sql = System.IO.File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "../00002165_Report.sql");
List<ReportDataModel> model=new List<ReportDataModel>();
using (NpgsqlConnection con = new NpgsqlConnection("Server=127.0.0.1;Port=5432;User Id=postgres;Password=6060;Database=hotelreal;"))
{
NpgsqlCommand cmd = new NpgsqlCommand(sql, con);
con.Open();
NpgsqlDataReader reader = cmd.ExecuteReader();
try
{
while (reader.Read())
{
model.Add(
new ReportDataModel() {
fName = reader["fName"],
lName = reader["lName"],
preferences= reader["preference"]
});
}
}
catch (Exception e)
{
}
}
return View(model);
}
在您的视图中创建 IEnumerable
模型列表并通过循环显示如下:
@model IEnumerable<ReportDataModel>
@foreach(var report in Model)
{
//display report.fName
//display report.lName
//display report.preferences
}
我在控制器中有这个方法:
public ActionResult Report()
{
string sql = System.IO.File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "../00002165_Report.sql");
using (NpgsqlConnection con = new NpgsqlConnection("Server=127.0.0.1;Port=5432;User Id=postgres;Password=6060;Database=hotelreal;"))
{
NpgsqlCommand cmd = new NpgsqlCommand(sql, con);
con.Open();
NpgsqlDataReader reader = cmd.ExecuteReader();
try
{
while (reader.Read())
{
Console.WriteLine(String.Format("{0}, {1}, {2}", reader["fName"], reader["lName"], reader["preference"]));
}
}
catch (Exception e)
{
}
}
return View();
}
如您所见,它执行 sql 查询并将结果写入控制台。但是我想做的是这样的:
将查询返回的结果保存在一个数组中。发送此数组以在 table.
中查看和显示它我该怎么做?
制作一个模型 class 例如 Report 并给出 3 个属性,即 FName、LName 和 Preference
public class Report
{
public String FName {get; set;}
public String LName {get; set;}
public String Preferences {get; set;}
}
从数据库中收集数据并将其分配给列表
List<Report> Reports=new List<Report>();
Report r;
while (reader.Read())
{
r=new Report();
r.FName=reader["fName"];
r.LName=reader["lName"];
r.Preferences=reader["preference"];
Reports.Add(r);
}
最后将列表传递给代码最底部的视图
return View(Reports);
我只是说创建一个模型如下:
public class ReportDataModel
{
public string fName{get; set;}
public string lName{get; set;}
public string preferences{get;set;}
}
接下来在您的控制器中创建该模型的列表,如下所示:
public ActionResult Report()
{
string sql = System.IO.File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "../00002165_Report.sql");
List<ReportDataModel> model=new List<ReportDataModel>();
using (NpgsqlConnection con = new NpgsqlConnection("Server=127.0.0.1;Port=5432;User Id=postgres;Password=6060;Database=hotelreal;"))
{
NpgsqlCommand cmd = new NpgsqlCommand(sql, con);
con.Open();
NpgsqlDataReader reader = cmd.ExecuteReader();
try
{
while (reader.Read())
{
model.Add(
new ReportDataModel() {
fName = reader["fName"],
lName = reader["lName"],
preferences= reader["preference"]
});
}
}
catch (Exception e)
{
}
}
return View(model);
}
在您的视图中创建 IEnumerable
模型列表并通过循环显示如下:
@model IEnumerable<ReportDataModel>
@foreach(var report in Model)
{
//display report.fName
//display report.lName
//display report.preferences
}