源代碼: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/