繁体   English   中英

C#,ASP.NET-从数据库收集数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM