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