版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
單元五使用DataSet操作數(shù)據(jù)庫C#語言程序設計基礎教程任務8.1DataSet結構及工作原理任務描述ADO.NET提供了DataSet(數(shù)據(jù)集)對象來解決這個問題。利用數(shù)據(jù)集,我們可以在斷開與數(shù)據(jù)庫的鏈接的情況下操作數(shù)據(jù),可以操作來自多個數(shù)據(jù)源的數(shù)據(jù)。在本任務中,我們的主要是手動創(chuàng)建一個DataSet,并在其中創(chuàng)建一個DataTable,手動創(chuàng)建的表的內(nèi)容如表8-1所示。表8-1需要手動創(chuàng)建的表框架和表內(nèi)容預備知識DataSet(數(shù)據(jù)集)是ADO.NET的核心概念??梢园袲ataSet當成內(nèi)存中的數(shù)據(jù)庫,DataSet是不依賴于數(shù)據(jù)庫的獨立數(shù)據(jù)集合。所謂獨立,就是說,即使斷開數(shù)據(jù)鏈路,或者關閉數(shù)據(jù)庫,DataSet依然是可用的。那什么是數(shù)據(jù)集呢?我們以生活中的場景為例,如圖8-1所示。車間把生產(chǎn)需要的原料存放在臨時倉庫中,在生產(chǎn)完成后,將臨時倉庫中的產(chǎn)品一起運送到倉庫中。數(shù)據(jù)集就相當于一個臨時倉庫。任務8.1DataSet結構及工作原理圖8-1臨時倉庫示意圖預備知識我們可以簡單地把數(shù)據(jù)集理解為一個臨時的數(shù)據(jù)庫,它把應用程序需要的數(shù)據(jù)臨時保存在內(nèi)存中,由于這些數(shù)據(jù)都緩存在本地機器上,就不需要一直保持和數(shù)據(jù)庫的鏈接。我們的應用程序需要數(shù)據(jù)時,就直接從內(nèi)存中的數(shù)據(jù)集讀數(shù)據(jù),也可以對數(shù)據(jù)集中的數(shù)據(jù)進行修改,然后將修改后的數(shù)據(jù)一起提交給數(shù)據(jù)庫。數(shù)據(jù)集不直接和數(shù)據(jù)庫打交道,他和數(shù)據(jù)庫之間的相互作用都是通過.NET數(shù)據(jù)提供程序來完成的,所以數(shù)據(jù)集是獨立于任何數(shù)據(jù)庫的。任務8.1DataSet結構及工作原理預備知識數(shù)據(jù)集的結構和我們學過的MSSQLServer數(shù)據(jù)庫的結構非常類似,我們可以把它認為是保存在內(nèi)存中的數(shù)據(jù)庫。數(shù)據(jù)集的結構圖8-2所示。任務8.1DataSet結構及工作原理圖8-2數(shù)據(jù)集(DataSet)的結構預備知識8.1.1DataSet創(chuàng)建DataSet需要用new關鍵字。DataSet數(shù)據(jù)集對象=newDataSet("數(shù)據(jù)集的名稱字符串");方法中的參數(shù)(數(shù)據(jù)集的名稱字符串)可以有,也可以沒有,如果沒有寫參數(shù),創(chuàng)建的數(shù)據(jù)集的名稱默認為NewDataSet。例如:DataSetmyDataSet=newDataSet();DataSetmyDataSet=newDataSet("StudentManager");任務8.1DataSet結構及工作原理預備知識8.1.2DataTableDataTable是內(nèi)存中的一個關系數(shù)據(jù)表,可以獨立創(chuàng)建使用,也可以作為DataSet的一個成員使用。如何把一個DataTable作為一個DataSet的個成員使用呢?首先我們要創(chuàng)建一個DataTable對象,其次通過使用Add方法將其添加到DataSet對象的Tables集合中。舉例說明:DataTable的創(chuàng)建。任務8.1DataSet結構及工作原理預備知識8.1.3DataColumnDataColumn相當于在數(shù)據(jù)表中添加字段,DataColumn是創(chuàng)建DataTable的基礎,我們通過向DataTable中添加一個或多個DataColumn對象來定義DataTable的結構。DataColumn有一些常用的屬性用于對輸入數(shù)據(jù)的限制。如表8-2所示。任務8.1DataSet結構及工作原理表8-2DataColumn的常屬性預備知識8.1.4DataRowDataRow表示DataTable中的記錄,即DataTable中包含的實際數(shù)據(jù),我們可以通過DataRow將數(shù)據(jù)添加到DataColumn定義好的DataTable中。//創(chuàng)建年級名稱列DataColumngradeName=newDataColumn("gradeName",typeof(string));gradeName.MaxLength=50;//創(chuàng)建一個新的數(shù)據(jù)行DataRowdrGrade=dtGrade.NewRow();drGrade["gradeName"]=”11級”;任務8.1DataSet結構及工作原理任務實施編程實現(xiàn)任務8-1任務8.1DataSet結構及工作原理從DataSet中獲取數(shù)據(jù)的方法有兩種:方法一:是通過指定DataSet中的具體DataTable的某行某列來獲取數(shù)據(jù)。具體操作步驟如下:1.通過表名,從DataSet中獲取指定的DataTable2.通過索引,從DataTable中獲取指定的DataRow3.通過列名,從DataRow中獲取指定的數(shù)據(jù)。方法二:可以直接將DataSet中的數(shù)據(jù)直接綁定到數(shù)據(jù)展示控件上。這種方式我們將在任務8.3中進行講解。知識拓展任務8.1DataSet結構及工作原理在本節(jié)中,介紹了DataSet的基本結構,其包含DataTable、DataColumn、DataRow等,要特別注意這些對象的用法。掌握手動創(chuàng)建DatsSet的方法以及如何訪問DataSet中的數(shù)據(jù)。歸納總結任務8.1DataSet結構及工作原理任務8.2使用DataAdapter對象查看教師信息任務描述在任務8.1中,介紹了DataSet的基本結構,知道了如何手動的創(chuàng)建一個DataTable并把它添加到DataSet中,但是這種方法過于繁瑣,如果將某個數(shù)據(jù)表有幾十個字段與上千條記錄顯示出來,就非常復雜。實際上,我們可以利用DataAdapter對象批量的查看與修改數(shù)據(jù)庫中的數(shù)據(jù),現(xiàn)在我們就使用DataAdapter對象查看教師表里的所有信息,并在輸入窗口中顯示。實現(xiàn)效果如圖8-3所示。圖8-3在輸入窗口中顯示的教師表信息預備知識我們可以把DataSet當成是內(nèi)存中的數(shù)據(jù)庫,就像我們原來講的一樣,DataSet相當于臨時倉庫的作用,但是如何將倉庫(數(shù)據(jù)庫)中的數(shù)據(jù)搬到臨時倉庫(DataSet)中呢?這時我們就要借助DataAdapter對象了,DataAdapter對象就相當于運貨車的作用。如圖8-4所示。任務8.2使用DataAdapter對象查看教師信息圖8-4DataAdapter對象的作用示意圖預備知識8.2.1認識DataAdapter對象DataAdapter對象又稱為數(shù)據(jù)適配器對象,這個對象和我們以前學過的其它的.NET數(shù)據(jù)提供程序核心對象一樣,可以支持多種類型的數(shù)據(jù)庫,同樣也需要引用對應的命名空間。DataAdapter從數(shù)據(jù)庫中讀取數(shù)據(jù),是通過其相應的方法與屬性實現(xiàn)的,其包含的主要方法與屬性如表8-4所示。任務8.2使用DataAdapter對象查看教師信息表8-4DataAdapter對象的主要屬性和方法預備知識8.2.2如何填充數(shù)據(jù)集使用DataAdapter填充數(shù)據(jù)集需要4個步驟就行了:(1)創(chuàng)建數(shù)據(jù)庫連接對象(Connection對象);(2)創(chuàng)建從數(shù)據(jù)庫查詢數(shù)據(jù)用的SQL語句;(3)利用上面創(chuàng)建的SQL語句Connection對象創(chuàng)建DataAdapter對象;(4)調(diào)用DataAdapter對象的Fill()方法填充數(shù)據(jù)庫。在步驟(4)中,F(xiàn)ill()方法接收一個數(shù)據(jù)表名稱字符串參數(shù),如果數(shù)據(jù)集中原來沒有這個數(shù)據(jù)表,調(diào)用Fill()方法后就會創(chuàng)建一個數(shù)據(jù)表。如果數(shù)據(jù)集中原來有這個數(shù)據(jù)表,就會把現(xiàn)在查出的數(shù)據(jù)繼續(xù)添加到數(shù)據(jù)表中。任務8.2使用DataAdapter對象查看教師信息預備知識8.2.3如何保存數(shù)據(jù)集中的數(shù)據(jù)現(xiàn)在已經(jīng)可以把數(shù)據(jù)庫中的數(shù)據(jù)一次讀取到DataSet中了,但是,我們?nèi)绾伟褦?shù)據(jù)集中修改過的數(shù)據(jù)保存到數(shù)據(jù)庫中呢?這就需要使用到DataAdapter對象中的Update()方法了,當然,我們在更新時需要相應的SQL語句,不過,在這里我們可以簡化操作,在.NET數(shù)據(jù)提供程序中為我們提供了一個SqlCommand對象,使用它可以自動生所需要的SQL語句。這樣,把數(shù)據(jù)集中修改過的數(shù)據(jù)保存到數(shù)據(jù)庫中,只需要兩個步驟。(1)使用SqlCommandBuilder對象生成更新用的相關命令。(2)調(diào)用DataAdapter對象的Update()方法。任務8.2使用DataAdapter對象查看教師信息任務實施編程實現(xiàn)任務8-2任務8.2使用DataAdapter對象查看教師信息知識拓展通過上面的介紹,實現(xiàn)了將數(shù)據(jù)庫中的數(shù)據(jù)填充到數(shù)據(jù)集,下面實現(xiàn)將數(shù)據(jù)集中修改后的數(shù)據(jù)保存到數(shù)據(jù)庫。舉例說明:現(xiàn)在假設數(shù)據(jù)集中的Teacher表數(shù)據(jù)已經(jīng)發(fā)生改變,將其寫回到數(shù)據(jù)庫。任務8.2使用DataAdapter對象查看教師信息歸納總結在本節(jié)中,介紹了DataAdapter對象的作用,介紹了如何使用DataAdapter相關的屬性和方法實現(xiàn)填充數(shù)據(jù)集以及保存數(shù)據(jù)集中的數(shù)據(jù)。應該能夠靈活的利用該對象,實現(xiàn)對數(shù)據(jù)庫的增、刪、改、查操作。任務8.2使用DataAdapter對象查看教師信息任務8.3實現(xiàn)“高校學生管理系統(tǒng)”教員信息列表顯示任務描述在本任務中,我們就利用VS2012為我們提供的一個強大的數(shù)據(jù)表展示控件DataGridView,以方便的顯示DataSet中數(shù)據(jù)以及實現(xiàn)增、刪、改數(shù)據(jù)。下面以教員信息列表的顯示及修改為例學習該控件,實現(xiàn)效果如圖8-6所示。圖8-6教員信息列表窗體界面預備知識8.3.1認識DataGridView控件DataGridView(數(shù)據(jù)網(wǎng)格視圖)控件是WinForms中功能強大的數(shù)據(jù)展示控件,操作DataGridView就像操作Excel一樣方便,可以直接修改和刪除數(shù)據(jù)。DataGridView(數(shù)據(jù)網(wǎng)格視圖)控件能夠以表格的形式展示數(shù)據(jù),可以設置為只讀,也可以允許編輯數(shù)據(jù),要想指定DataGridView控件顯示DataSet中的哪一個表的數(shù)據(jù),只需要指定它的DataSource屬性即可。任務8.3實現(xiàn)“高校學生管理系統(tǒng)”教員信息列表顯示預備知識8.3.2DataGridView控件的相關屬性我們可以借助DataGridView(數(shù)據(jù)網(wǎng)格視圖)控件提供的大量屬性對該控件進行控制,常用的屬性如表8-5所示。任務8.3實現(xiàn)“高校學生管理系統(tǒng)”教員信息列表顯示表8-5DataGridView(數(shù)據(jù)網(wǎng)格視圖)控件的主要屬性預備知識8.3.2DataGridView控件的相關屬性通過Columns屬性,我們還可以設置DataGridView(數(shù)據(jù)網(wǎng)格視圖)中的每一列的屬性,包括列的寬度、列頭的文字、是否為只讀、是否凍結、對應數(shù)據(jù)表中的哪一列等,各列的主要屬性參見表8-6。任務8.3實現(xiàn)“高校學生管理系統(tǒng)”教員信息列表顯示表8-6各列的主要屬性任務實施編程實現(xiàn)任務8-3任務8.3實現(xiàn)“高校學生管理系統(tǒng)”教員信息列表顯示知識拓展在任務8.1中,介紹了DataAdapter對象,該對像有一個SelectCommand屬性。下面我們就結合該屬性,實現(xiàn)按性別查找學生功能。舉例說明:實現(xiàn)學生管理系統(tǒng)中,按性別查找學
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度企業(yè)簽約帶貨主播產(chǎn)品試用與評測合同3篇
- 2025年度教育科技公司干股分紅與在線教育合作協(xié)議3篇
- 2025年企業(yè)法人變更合同審查與員工權益保障協(xié)議3篇
- 2025年度金融資產(chǎn)重組收購協(xié)議3篇
- 2025年度公對公交易合同模板:金融衍生品交易合作協(xié)議2篇
- 二零二五年度教育培訓機構教師職務聘任與教育教學改革合同3篇
- 2025年度會展兼職工作人員勞務合同樣本3篇
- 二零二五年度軍事訓練基地保密協(xié)議及設施管理合同2篇
- 二零二五年度物流行業(yè)創(chuàng)新技術研究承包合同3篇
- 二零二五年度內(nèi)墻膩子施工與室內(nèi)環(huán)境檢測及優(yōu)化合同3篇
- 石油英語詞匯
- 《夜宿山寺》-完整版課件
- 滬教牛津版八年級上冊初二英語期末測試卷(5套)
- 北京市海淀區(qū)2020-2021學年度第一學期期末初三物理檢測試卷及答案
- 《潔凈工程項目定額》(征求意見稿)
- 家庭室內(nèi)裝飾裝修工程保修單
- 小學語文課堂提問有效性策略研究方案
- 物業(yè)上門維修收費標準
- ATS技術交流(新型發(fā)動機智能恒溫節(jié)能冷卻系統(tǒng))100318
- 手術區(qū)皮膚的消毒和鋪巾ppt課件
- 2022年度培訓工作總結
評論
0/150
提交評論