簡體   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