2017年5月4日 星期四

由資料庫取出資料後轉為物件的方法 / How do I transferring data from a database to an object?

首先建立一個 Class
public class Customer
{
    public string Sn { get; set; }
    public string Name { get; set; }
    public string Title { get; set; }
}
有一串 SQL 語法長這樣,取得這三個欄位
select  ROW_NUMBER() over(order by id) as Sn
       ,Name
       ,Title 
from [dbo].[Data_User]
要如何自動轉成 Customer 的 Class呢?
public static List LoadCustomers()
{
    List customers = new List();
    SqlConnection conn = new SqlConnection(strConn);
    SqlCommand cmd = new SqlCommand("select  ROW_NUMBER() over(order by id) as Sn,Name,Title from [dbo].[Data_User]", conn);

    conn.Open();
    SqlDataReader reader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);

    while (reader.Read())
    {
        Customer customer = new Customer();
        for (int i = 0; i < reader.FieldCount; i++)
        {
            PropertyInfo property = customer.GetType().GetProperty(reader.GetName(i));
            property.SetValue(customer, (reader.IsDBNull(i)) ? "" : reader.GetValue(i).ToString(), null);
        }
        customers.Add(customer);
    }
    reader.Close();
    return customers;
}
這樣就可以啦!寫彈性一點可以用到<T>。

沒有留言:

張貼留言

Surface pro 6降頻至0.4GHz的解決方式

網路查到很多都說: 按住電源鍵30秒關機、再同時按住電源鍵+音量上鍵15秒重啟,解決。 實際試過是有效,但某一天看到當配件溫度過高,也是會造成降頻的原因之一, 索性就把電源線拔掉,神奇的事情發生了~~ cpu頻率就正常了 。 但其實當下電源供應器並沒有發熱的現象,只...