[英]C#, ASP.NET - Gathering data from a database
我有代码,该代码使我从数据库中返回一行,
con = new System.Data.SqlClient.SqlConnection();
dsl = new DataSet();
con.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\tbl.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
con.Open();
string sql = "SELECT * From tbl_fb";
da = new System.Data.SqlClient.SqlDataAdapter(sql, con);
da.Fill(dsl, "fb");
DataRow dRow = dsl.Tables["fb"].Rows[0];
ViewData["a"] = dRow.ItemArray.GetValue(1).ToString();
ViewData["b"] = "afagjma";
con.Close();
有没有办法,我可以使用循环从表中获取所有行。 行数未知。 我知道我可以使用变量(i)而不是数字进行循环处理。 但是然后我需要使用ViewData
数组,这对我来说是个问题。
示例:ViewData [“ a”] [i];
您应该设置一个类,该类定义从数据库返回的数据。
例如:
public class Customer
{
public int Id { get; set;}
public string Name { get; set;}
}
然后,您将创建一个List<Customer>()
,并将其设置为您的MVC页面的模型。
例如:
var data = new new List<Customer>();
ViewData.Model = data;
并将数据加载到列表中:
foreach(var row in dsl.Tables["fb"].Rows)
{
var customer = new Customer();
customer.Id = row.Field<int?>("Id");
customer.Name = row.Field<string>("Name");
data.Add(customer);
}
然后,在您的MVC页面上,将<%@ Page %>
标头设置为具有Inherits属性,如下所示:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<Customer>>" %>
现在,您终于可以在页面内直接绑定到模型了:
<% foreach (var item in Model) { %>
Customer Id: <%: item.Id %>
Name: <%: item.Name %>
<% } %>
浏览“ fb”表中每个DataRow的最简单方法是:
foreach (DataRow dr in dsl.Tables["fb"].Rows) {
// do something with each row
}
这将遍历表的所有行。
若要返回DataRow对象中特定列的值,请执行以下操作:
string firstName = (string)dr["FirstName"];
string lastName = (string)dr["LastName"];
int age = (int)dr["Age"];
这样,您说的是:“从'FirstName'列获取值,并将其强制转换为字符串,将'Age'列的值强制转换为整数,依此类推。但是,您需要验证输入每一列的类型,并相应地调整您的演员表。
您需要遍历dsl
因为这是数据集。 这是你的问题:
DataRow dRow = dsl.Tables["fb"].Rows[0];
您将获得一个DataRow Rows[0]
,您需要在其中循环遍历dsl
以获取每个 DataRow
为什么不使用DataReader
呢? 它将循环读取一次。 如果需要,您可以使用它来填充DataTable
并将其传递给DataSet
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.