男人的小金庫藏在哪里?——公共數據集Model


源代碼:13033480群共享

你有沒有小金庫,我就不問了,問一下,你的小金庫藏在哪里吧?網上有個人,估計是女人,總結了一下並附上個安全系數:

1.       辦公室抽屜――保險系數☆☆

2.       專業書內―――保險系數☆☆☆

3.       內褲荷包―――保險系數☆☆☆

4.       借給朋友―――保險系數☆☆☆

5.       存在銀行―――保險系數☆☆☆☆

象黃宏那個,又是藏在盆里、藏在桶里、藏在鞋里、藏在襪子里的,檔次太低,咱就不提了…

 

什么,你問我有沒有小金庫?

笑而不答是真君子哈…

我只是喜歡一句話:“大隱隱於市,小隱隱於野”。熟視無睹是人性的共同弱點,眼皮子底下的地方,才是盲區。

我口袋里很少超過100塊錢,老婆給,我都不要。前兩天,單位逼着讓我孝敬郭美美50塊錢,一模口袋,楞沒掏出來,標准的大丈夫哈……

我沒事兒喜歡炒炒股,就是放哪兒,漲跌,隨它了,很少看的……

別瞎說哈,哪兒,不是小金庫……

 

現在,我們的問題是,你從數據庫查詢出來的數據,放在哪兒?

你想起了王顧左右而言他?別瞎鬧了,我們這是在博客園,程序員的網上家園哈,不言程序言什么??給你看下程序運行效果,打打岔:

我們前面,已經能從數據庫中查詢,獲得一個SqlDataReader了,這個SqlDataReader可是一直處於連接狀態的,它里面的數據,就好象我們在ATM里看到的錢一樣(掌嘴,怎么又提這東西),你總不能捧着ATM到處走吧?你總得找個地方放吧?

別和我提DataSet,那東西,檔次太低。我們自己為數據庫量身定制一個小金庫吧(再掌嘴…):

一、解決方案中添加類庫項目Model,

二、Model中添加類CategoryInfo.cs,代碼如下:

 

using System;
using System.Collections.Generic;
using System.Text;

namespace WestGarden.Model
{
    public class CategoryInfo
    {
        private string categoryid;
        private string name;
        private string descn;

        public CategoryInfo() { }

        public CategoryInfo(string categoryid, string name, string descn)
        {
            this.categoryid = categoryid;
            this.name = name;
            this.descn = descn;
        }

        public string CategoryId
        {
            get { return categoryid; }
        }
        public string Name
        {
            get { return name; }
        }
        public string Descn
        {
            get { return descn; }
        }
    }
}

 

我們前面提到,類是變量與函數的封裝,這是通常情況,常見的情況也有這樣的,里面封裝的主要是變量,附帶幾行代碼,是方便讀取和設置這幾個變量的。這個類,主要是用來存放數據的,在一個項目里,通常,Model里會有幾個這樣的類,所以,我把這個Model叫做數據集,這一點,您就別拍我了,有的時候,我是很固執的…..

值得注意的是,這個類,只有三個變量,直接對應着分類表中的三個字段,也就是說,它只能存放一行數據,如果我們想存放幾行,一個表格的數據,怎么辦呢?

看看我們怎么樣簡單一點地使用這個類吧:

 

三、Web中添加引用→項目→Model,Defualt,aspx.cs中添加using WestGarden.Model;代碼如下:

using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections.Generic;
using WestGarden.Model;

namespace WestGarden.Web
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            IList<CategoryInfo> categories = new List<CategoryInfo>();

            String connectionString = ConfigurationManager.ConnectionStrings["NetShopConnString"].ConnectionString;

            SqlConnection conn = new SqlConnection();
            conn.ConnectionString = connectionString;

            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "SELECT * FROM Category";

            conn.Open();

            SqlDataReader rdr = cmd.ExecuteReader();
            while (rdr.Read())
            {
                CategoryInfo category=new CategoryInfo(rdr.GetString(0), rdr.GetString(1), rdr.GetString(2));
                categories.Add(category);
            }

            rdr.Close();
            conn.Close();

            ddlCategories.DataSource = categories;
            ddlCategories.DataTextField = "Name";
            ddlCategories.DataValueField = "CategoryId";
            ddlCategories.DataBind();
        }
    }
}

 

注意里面的這句:IList<CategoryInfo> catogories = new List<CategoryInfo>();

這個,我們簡單理解一下吧,這是一個列表,一個類的列表,前面我們做的CategoryInfo.cs類的列表,它里面的一項,就是一個CategoryInfo類,你可以使用它的方法Add(),一項一項地把我們從SqlDataReader中讀取的每一行,放在CategoryInfo類中的數據,附加上去。從而形成一個表格。

 

注意這個由一個一個CategoryInfo.cs類構成的列表,new以后,交給的是一個IList指針,叫句柄、叫地址,隨便你了,你們都知道,我這個人,很隨便的……

這個IList是一個接口,你想深入了解這個IList接口,可以去查相關資料,也可以在我后面的內容是找到一些稍微詳細一點的解釋。

這個IList接口指針,所指向的表格數據的內容,就可以直接綁定到我們的下拉列表框上去了,想顯示什么內容,您隨意……

 

致謝: 

感謝網友yzi拍的金磚,在這里,這個IList可以不用,可以直接使用List,謝謝!!

感謝網友純粹的郭子:如果是綁定到Web控件,除了使用List、IList,還可以使用IEnumerable:

"IEnumerable Ilist List"
選擇返回哪一個作為數據接口,要看具體操作。
IEnumerable:如果僅需要顯示數據,返回此類型。
IList:如果需要顯示數據,簡單的操作數據,返回此類型。
List:如果需要顯示數據,並進行許多復雜數據操作,返回此類型。

不過,在這里,使用IEnumerable,要費些周折,因為,IEnumerable里,沒有Add方法,如果非要使用,就讓這個IEnumerable再指向IList吧。

IList<CategoryInfo> categories = new List<CategoryInfo>();
IEnumerable<CategoryInfo> cat = categories;

如果不考慮為后面的代碼做個鋪墊,不考慮有些網友說的,這堆代碼不應該放在窗體文件的代碼頁中(謝謝提醒,放在這里,只是個驗證),僅僅在這里的話,用List比較合適。

再次表示感謝,還是那句話,精品,是拍出來的。板磚里面有金磚,讓我們冒着朋友的板磚,前進、前進、前進、進......

版權所有©2012,WestGarden.歡迎轉載,轉載請注明出處.更多文章請參閱博客http://www.cnblogs.com/WestGarden/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM