向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(哈哈,又不謙虛了)。
 
水平有限,亂髮一通,歡迎指教。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章