天天看點

向ComboBox控件綁定資料

  public void RoomType_Bind(System.Windows.Forms.ComboBox combo)

        {

            // 将房間類型綁定到combo控件

            string strSelec = "select [RoomTypeName] from [RoomType]";

            SqlDataReader sdrRoomType = DBManager.ExecAndGetSdr(strSelec);//1            combo.Items.Clear();//2

            while (sdrRoomType.Read())//3

            {

                combo.Items.Add(sdrRoomType["RoomTypeName"]);//4

            }

            sdrRoomType.Close();//5

        }

在這裡的函數名,變量名都是用的我項目裡面的名字,為了節約時間,就懶得去想另外的名字了。今後都如此。

DBManager在“我的代碼庫”裡有定義,這個類可能對我非常重要,隻要做與資料庫有關的項目,我想我都一定帶上它的,它是我的好幫手。

//2這一行代碼的作用是清除目前cmb控件的欄目,如果沒有這一行,大家會看到cmb控件裡會有一個空欄目

//3這一行是這個算法最實質的操作,向cmb控件添加欄目,每次添加一條。sdrRoomType最開始(剛建立這個對象時)可以把它了解成一個表,sdrRoomType.read()就是讀取這個表中的下一條紀錄(第一次調用時是讀取第一條紀錄),那麼這時sdrRoomType就代表的是下一條紀錄了,代表的是一條紀錄,不是一個表,這是sqldatareader對象最難了解的地方了。//4這一行對我這個觀點進行了證明,它表示添加sdrRoomType所代表的目前行的RoomTypeName字段的值。

//4這一行也可以改為                combo.Items.Add(sdrRoomType.GetString(0));用序号擷取所要的字段。

如果知道一列的名稱而不知道其所在的位置,可以通過調用DataReader 對象的GetOrdinal()方法解決,此方法接收一個列名并傳回此列名所在的列号

如:int id = sdrRoomType.GetOrdinal("RoomTypeName");

//5 DataReader對象在調用Close()方法即關閉與資料庫的連接配接,如果在沒有關閉之前又重新打開第二個連接配接,則會産生一條異常資訊)

DataReader的特性 ADO.NET DataReader對象可以從資料庫中檢索隻讀、隻進的資料流。因為每次在記憶體中的資料隻有一行,是以使用DataReader可提高應用程式的性能并減少系統開銷。它還提供了未緩沖的資料流,該資料流使過程邏輯可以有效地按順序處理從資料源中傳回的結果。由于資料不在記憶體中緩存,是以在檢索大量資料時,DataReader是一種合适的選擇。

第一次寫教程性質的東西,有感觸啊。要真正寫好一個教程是非常不容易的。當然如果能寫好一點,其實受益最大的是自己,因為你必須花時間,動腦筋去琢磨,在這個過程中,你對一些概念,結論的了解會上一個層次,在腦中留下的印象會更深刻。

我現在沒有多少時間來寫教程了,如果有時間一定多寫一點。

我還覺得,學習的一個非常好的方式,就是試着去教别人。特别是對一些概念,原理的東西,通過反複的講,你的了解一定會非常深刻的,一定會有所體會的。這正所謂是教學相長。我又聯想起新東方學校的老師,他們的水準真是讓人佩服,一方面肯定要歸功于他們的刻苦勤奮,另一方面我想他們應該好好感謝他的學員。如果沒有他們自己的反複的去講授(沒有學生的話,誰講得起來啊),他們對知識了解深度,對知識的掌握的熟練度一定沒有現在這麼好了。我自己也有深刻的體會,現在我對高中數學的了解比教書之前要深多少倍呢,我敢保證,如果現在我去參加聯考數學考試,成績一定不會低于140(哈哈,又不謙虛了)。

本文轉自 參天樹 51CTO部落格,原文連結:http://blog.51cto.com/119244/51073,如需轉載請自行聯系原作者