![]() 圖01:DataSet對象的結(jié)構(gòu)模型圖 |
SqlConnection sqlConnection1 = new SqlConnection ( "Data Source=localhost ;Integrated Security=SSPI ;Initial Catalog=Northwind" ) ; //創(chuàng)建數(shù)據(jù)連接 SqlCommand selectCMD = new SqlCommand ( "SELECT CustomerID , CompanyName FROM Customers" , sqlConnection1 ) ; //創(chuàng)建并初始化SqlCommand對象 SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter ( ) ; custDA.SelectCommand = selectCMD ; sqlConnection.Open ( ) ; //創(chuàng)建SqlDataAdapter對象,并根據(jù)SelectCommand屬性檢索數(shù)據(jù) DataSet dsDataSet1 = new DataSet ( ) ; sqlDataAdapter1.Fill ( dsDataSet1 , "Customers" ) ; //使用SqlDataAdapter的Fill方法填充DataSet sqlConnection.Close ( ) ; //關(guān)閉數(shù)據(jù)連接 |
SqlCommandBuilder sqlCommandBuilder1 = new SqlCommandBuilder ( sqlDataAdapter1 ) ; //以sqlDataAdapter1為參數(shù)來初始化SqlCommandBuilder實(shí)例 dsDataSet1.Tables["Customers"].Rows[0].Delete ( ) ; //刪除DataSet中刪除數(shù)據(jù)表Customers中第一行數(shù)據(jù) sqlDataAdapter1.Update ( dsDataSet1 ,"Customers" ) ; //調(diào)用Update方法,以DataSet中的數(shù)據(jù)更新從數(shù)據(jù)庫 dsDataSet1.Tables["Customers"].AcceptChanges ( ) ; |
由于不了解DataSet結(jié)構(gòu)和與數(shù)據(jù)庫關(guān)系,很多初學(xué)者往往只是更新了DataSet中的數(shù)據(jù),就認(rèn)為數(shù)據(jù)庫中的數(shù)據(jù)也隨之更新,所以當(dāng)打開數(shù)據(jù)庫瀏覽時發(fā)現(xiàn)并沒有更新數(shù)據(jù),都會比較疑惑,通過上面的介紹,疑惑應(yīng)當(dāng)能夠消除了。
3. XML和DataSet:
DataSet中的數(shù)據(jù)可以從XML數(shù)據(jù)流或文檔創(chuàng)建。并且.Net Framework可以控制加載XML數(shù)據(jù)流或文檔中那些數(shù)據(jù)以及如何創(chuàng)建DataSet的關(guān)系結(jié)構(gòu)。加載XML數(shù)據(jù)流和文檔到DataSet中是可使用DataSet對象的ReadXml方法(注意:ReadXml來加載非常大的文件,則性能會有所下降)。ReadXml 方法將從文件、流或 XmlReader 中進(jìn)行讀取,并將 XML 的源以及可選的 XmlReadMode 參數(shù)用作參數(shù)。該ReadXml方法讀取 XML 流或文檔的內(nèi)容并將數(shù)據(jù)加載到 DataSet 中。根據(jù)所指定的XmlReadMode和關(guān)系架構(gòu)是否已存在,它還將創(chuàng)建DataSet的關(guān)系架構(gòu)。
三.DataSet和數(shù)據(jù)綁定(DataBinding)
數(shù)據(jù)綁定是數(shù)據(jù)綁定是綁定技術(shù)中使用最頻繁,也是最為重要的技術(shù),也可以說是各種.Net開發(fā)語言開發(fā)數(shù)據(jù)庫應(yīng)用程序最需要掌握的基本的知識之一。數(shù)據(jù)綁定之所以很重要,是因為在.Net FrameWork SDK中并沒有提供數(shù)據(jù)庫開發(fā)的相關(guān)組件,即如:DbTextBox、DbLabel等用于數(shù)據(jù)庫開發(fā)的常用組件在.Net FrameWork SDK中都沒有。而數(shù)據(jù)綁定技術(shù)則能夠把TextBox組件"改造"成DbTextBox組件,把Label組件"改造"成DbLabel組件等等。所有這些都與DataSet有直接關(guān)系。
數(shù)據(jù)綁定分成二類:簡單型數(shù)據(jù)綁定和復(fù)雜型數(shù)據(jù)綁定。適用于簡單型數(shù)據(jù)綁定組件一般有Lable、TextBox等,適用于復(fù)雜性數(shù)據(jù)綁定的組件一般有DataGrid、ListBox、ComboBox等。其實(shí)簡單型數(shù)據(jù)綁定和復(fù)雜性數(shù)據(jù)綁定并沒有明確的區(qū)分,只是在組件進(jìn)行數(shù)據(jù)綁定時,一些結(jié)構(gòu)復(fù)雜一點(diǎn)的組件在數(shù)據(jù)綁定時操作步驟相近,而另外一些結(jié)構(gòu)簡單一點(diǎn)的組件在數(shù)據(jù)綁定時也比較類似。于是也就產(chǎn)生了二個類別。以下就結(jié)合TextBox組件和DataGrid組件分別探討DataSet在實(shí)現(xiàn)簡單型數(shù)據(jù)綁定和復(fù)雜性數(shù)據(jù)綁定作用和具體實(shí)現(xiàn)方法。
1. 簡單型數(shù)據(jù)綁定:
簡單型數(shù)據(jù)綁定一般使用這些組件中的DataBindings屬性的Add方法把DataSet中某一個DataTable中的某一行和組件的某個屬性綁定起來,從而達(dá)到顯示數(shù)據(jù)的效果。TextBox組件的數(shù)據(jù)綁定具體實(shí)現(xiàn)方法是在代碼清單01后,再添加代碼清單03中的代碼,代碼清單03中的代碼是把DataSet中的Customers 數(shù)據(jù)表中的"CustomerID"的數(shù)據(jù)和TextBox的Text屬性綁定起來,這樣DbTextBox就產(chǎn)生了。其他適用于簡單型數(shù)據(jù)綁定組件數(shù)據(jù)綁定的方法類似與此操作:
代碼清單03:
textBox1.DataBindings.Add ( "Text" , dsDataSet1, " Customers. CustomerID " ) ; |
dataGrid1.DataSource = dsDataSet1 ; dataGrid1.DataMember = " Customers " ; |
新聞熱點(diǎn)
疑難解答