




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第13章 數據庫開發基本操作前面我們學習了很多WinForms的控件,利用這些控件可以快速開發Windows應用程序的界面,在這些程序中只涉及了少量的數據,我們將這些數據存儲在文件中。事實上,創建的大部分應用程序都要訪問或保存數據,而這些數據基本上都存放在數據庫中,比如通過ATM柜員機取錢,只要銀行卡和密碼正確,就可以查詢到你卡中的余額,也可以取出需要的錢,這些都是通過數據庫操作最終完成的。常用的數據庫有很多種,包括Oracle、MySQL、SQLServer、MS Access等,本書主要使用SQLServer數據庫。為了使客戶能夠訪問服務器中的數據庫,必須使用數據庫訪問的方法和技術,.NE
2、T提供的ADO.NET就是一種非常好用易學而且功能強大的數據庫訪問技術。本章主要學習數據庫的基本知識和使用ADO.NET訪問數據庫的方法和技術。主要內容如下:數據庫基礎知識創建和連接數據庫如何使用VS2008提供的控件快速訪問數據庫用ADO.NET訪問數據庫的技術和方法。數據集(DataSet)的使用如何使用DataReader訪問數據庫數據綁定控件GridView的使用13.1 創建和連接數據庫 VS2008內置了Express版本的SQL Server2005,用于學習和開發使用,Express版本的SQL Server并沒有提供管理工具(Management Studio),可以使用VS
3、2005的服務器資源管理器來操作數據庫,也可以在微軟網站下載免費的Express版本的SQLServer Management Studio。網址為:http:/ 首先按照以下步驟連接到本機的SQL Server 2005 Express。13.2 用可視化組件連接并查詢數據庫示例 VS2008提供了非常簡單和方便的方法,可以把數據庫中的數據顯示在窗體上。下面讓我們體會一下VS2008在數據庫操作方面的簡單、方便和功能強大。在進行下面的步驟之前,首先要保證服務器資源管理器中存在需要的數據庫。13.3 用ADO.NET連接數據庫 ADO.NET是.NET Framework中不可缺少的一部分,它
4、由一組類組成,通過這些類可以完成對數據庫的操作,在程序中使用這些類,必須引入System.Data命名控件。使用ADO.NET不僅可以訪問數據庫,還可以實現對XML文件和其他存儲數據的訪問。本節通過學習ADO.NET的組成,掌握使用ADO.NET操縱數據庫的方法,使我們編寫的應用程序功能更加強大。13.3.1 ADO.NET簡介ADO.NET的名稱起源于ADO(ActiveX Data Objects),是一個非常廣泛的類組,以往的Microsoft訪問數據庫基本都使用該技術。ADO.NET與ADO的作用相同,但是功能更強大,更容易使用,而且ADO.NET中的類、屬性和方法與ADO也有很大的不
5、同。ADO.NET比ADO的功能有很大的改進,其優點主要表現在以下幾個方面:可以簡單的訪問關系數據。ADO.NET的主要目標是可以提供對關系數據的簡單訪問,它與數據源斷開連接時也可使用數據,這主要是基于ADO.NET對數據集(DataSet)的支持。數據集的概念在本章的后面會有詳細的講解。提供對XMI的支持。隨著XML的應用越來越廣泛,和XML進行交互是數據訪問的重要部分。ADO.NET提供了豐富的類實現XML數據的讀寫??蓴U展性強。ADO.NET提供了幾種內置的.NET數據提供者,有專門用于連接SQL Server和Oracle數據庫的類,也有支持通用數據接口ODBC和OLE DB。因此通過
6、內置的數據提供者,ADO.NET支持幾乎所有的數據庫或數據格式,具有很香的擴展性。支持多層架構和工廠模式。多層架構是當今商業和電子商務應用程序普遍使用的體系結構,ADO.NET通過使用XML格式的數據對其提供支持。ADO.NET提供了工廠模式,可以在不修改代碼的情況下,實現數據庫的移植。圖13.12顯示了ADO.NET在.NET Framework中起的作用。13.3.2 ADO.NET的主要組件ADO.NET提供了兩個組件用來訪問和處理數據:NET Framework數據提供程序和數據集(DataSet)。.NET Framework數據提供程序包含用于訪問各種數據源的數據對象,是專門為數據
7、處理以及快速的只進、只讀訪問數據而設計的組件,使用這些數據提供程序可以對數據庫進行操作,檢索、查詢、更新、刪除數據庫中的數據等操作。目前有4種類型的數據提供程序,具體要使用哪種數據提供程序,要根據使用的是什么數據庫。數據提供程序使用范圍見表13.1。13.3.3 用Connection對象建立數據庫連接 【本節示例參考:源代碼C13Example_CreateCon】 Connection對象用于打開與數據庫的連接,以便對其執行命令。不同的.NET數據提供程序都有自己的連接類,見表13.3。13.3.4 用Command對象檢索和操作數據庫中數據 創建了數據連接之后,就要對數據庫中的數據進行操
8、作,ADO.NET中提供的Command對象可以對數據庫執行增、刪、改、查。 Command對象屬于.NET數據提供程序,不同的數據提供程序有不同的Command對象,見表13.5。13.3.5 查詢和檢索數據【本節示例參考:源代碼C13 Example_School】前面我們學習的Connection對象和Command對象都是為實現數據庫操縱而設計的,本節通過一個示例程序,學習使用這兩個對象實現數據查詢。本例使用的數據庫名稱為School,數據表名為“Teacher”。創建一個Windows應用程序,在窗體中添加一個按鈕“查詢”,程序運行時,單擊“查詢”按鈕將檢索到的數據顯示在消息框(Me
9、ssageBox)中。在按鈕“查詢”的Click事件中添加代碼如代碼13- 添加新數據 【本節示例參考:源代碼C13 Example_School】 通過ADO.NET中的Command對象可以向數據庫發送操作命令,這些操作命令可以是某個SQL語句或存儲過程。通常對數據庫的操作包括增、刪、改、查4種,前三種操作都是單向的,即這些操作修改數據庫中數據后并不返回數據。查詢屬于雙向操作,既要向數據庫提交查詢命令還要從從數據庫中獲取數據。 注意:所有的單向操作都使用Command對象的ExecuteNonQuery()方法來執行。13.3.7 刪除數據【本節示例參考:源代碼C13 Ex
10、ample_School】刪除數據的過程和插入數據的基本相同,只要改變sql語句即可,具體步驟見上一節,這里就不再詳述。給按鈕“刪除”的Click事件添加代碼,示例代碼13-3說明了刪除數據的操作。13.3.8 更新數據 【本節示例參考:源代碼C13 Example_School】 更新數據時唯一不同的地方是sql語句,將更新數據的代碼添加到更新按鈕的Click事件中。13.4 數據集(DataSet)簡介 DataSet對象是ADO.NET的一個重要組成部分,是支持ADO.NET斷開式、分布式的數據方案的核心對象,它允許從數據庫中檢索到的數據存放在內存中,可以理解為一個臨時的數據庫,可以從任
11、何有效的數據源將數據加載到數據集中。13.4.1 認識數據集簡單地說數據集就是內存中的一個臨時數據庫。如何理解這個概念呢?下面來打一個比喻。工廠一般在每天上班時要把今天用的原料由專人從倉庫領出來,放在車間的臨時倉庫中,由每個工人直接從臨時倉庫領取,而不是每個人要用材料都去倉庫領取。下午下班時要把沒有用的材料和制作好的成品都要由專人存放到倉庫中。那么數據集就相當于臨時倉庫,將需要的數據從數據庫一次提取出來,提供給用戶使用,修改后的結果可以再經由數據集提交給數據庫進行保存。數據集把應用程序需要的數據臨時保存在內存中,可以實現數據庫的斷開式訪問,應用程序需要數據時,直接從內存中的數據集讀取數據,也可
12、以修改數據集中的數據,將修改后的數據一起提交給數據庫。數據集的結構和數據庫很相似,由表組成,每張表由行和列組成,數據集的結構如圖13.21所示。13.4.2 數據集的工作原理 數據集并不直接和數據庫打交道,它和數據庫之間的相互作用是通過.NET數據提供程序中的數據適配器(DataAdapter)對象來完成的。那么數據集是如何工作的呢?它的工作原理如圖13.22所示。13.4.3 如何創建數據集創建數據集對象和創建普通類的對象方法相同,都使用new關鍵字實例化類,語法如下:DataSet 數據集對象名=new DataSet(“數據集的名稱”);語法中的參數“數據集名稱”有和沒有均可,沒有時,系
13、統默認給數據集分配名稱為“NewDataSet”,以下寫法都是正確的:DataSet da=new DataSet();DataSet da=new DataSet(“book”);VS2008可以通過使用控件的方式創建數據集對象。在工具箱中雙擊“DataSet”按鈕,打開“添加數據集”對話框,在類型化數據集和非類型化數據集中選擇,如圖13.23所示。如果選擇類型化數據集,要求必須已經在項目中有內置架構的數據集,如果沒有,是不能創建的。13.4.4 數據適配器(DataAdapter)對象【本節示例參考:源代碼C13 Example_DataSetTest】數據集的作用是臨時存放數據,其并不直
14、接和數據庫打交道,它和數據庫之間的相互作用是通過.NET數據提供程序中的數據適配器(DataAdapter)對象來完成的。數據庫中的數據需要通過數據適配器的運輸才存放到數據集中,而在數據集中的任何修改也要通過數據適配器提交到數據庫中,數據適配器就象倉庫和車間臨時倉庫之間運輸材料的運貨車,而數據連接則是運貨車行走的路線。DataAdapter在數據集和數據庫之間起橋梁的作用。DataAdapter用于管理與數據庫的連接、執行命令并填充數據集和更新數據庫。數據適配器屬于.NET數據提供程序,不同類型的數據庫使用不同的數據適配器,相應的命名空間中的適配器見表13.10。13.4.5 簡單實例使用數據
15、集檢索數據 【 本 節 示 例 參 考 : 源 代 碼 C 1 3 Example_DataSetTest】 本節的應用程序用于根據學號檢索學生的詳細信息,其界面如圖13.25所示。13.5 使用DataReader訪問數據 DataReader是.NET數據給程序提供的一個輕量級對象,用來從數據庫檢索只讀的且指針只能向前移的數據流,對于要求優化只讀只進數據訪問的應用程序,DataReader是一個較好的選擇。只讀就是只能通過它獲取數據而不能修改數據,只進就是讀取記錄的游標只能向前移動,不能讀取了后邊的記錄返回去讀前面的。13.5.1 認識DataReader 對象 使用DataReader對
16、象可以從數據庫中檢索數據,它每次只能從查詢結果中讀取一行數據到內存中,并只允許在結果中每次向前移動一個記錄。DataReader屬于.NET數據提供程序,不同的數據提供程序都有不同的DataReader類。表13.13列出了.NET數據提供程序及其DataReader類。13.5.2 用DataReader讀取數據【本節示例參考:源代碼C13Example_DataReaderTest】與前面學習的數據提供程序中的其他組件不同,DataReader對象不能直接實例化,需要調用Command對象的ExecuteReader()方法的返回值。使用DataReader讀取數據的步驟如下:(1)創建數
17、據連接的Connection對象。(2)創建Command對象。(3)打開數據連接。(4)調用Command對象的ExecuteReader()方法創建DataReader對象,示例如下:SqlDataReader reader=comm. ExecuteReader();其中comm為Command對象。(5)使用DataReader對象的read()方法逐行讀取數據。此方法返回一個布爾值,如果讀到一行記錄,返回true,否則返回false。(6)讀取當前行的某列數據。讀取數據有兩種寫法,一種是使用GetValue(i)方法獲取值,參數“i”為列的索引,得到的值是Object類型,必須進行數
18、據類型轉換。示例如下:string str=reader.GetValue(1).ToString();其中GetValue(1)方法中的參數“1”表示第二列。也可以使用類似索引器的方式訪問數據,語法為:(數據類型)DataReader i;或(數據類型)DataReader“列名”;這種方法返回的值也是Object類型的,需要進行拆箱操作,轉換數據類型。(7)關閉DataReader對象,調用該對象的Close()方法。如:reader.Close(); 13.6. 用DataGridView 控件顯示和操作數據在本章的13.2節中,我們已經見識過DataGridView的強大功能和開發時的
19、簡單快速,不過那只是DataGridView 控件最簡單的使用方式,該控件除了可以直接顯示數據表數據外,還支持排序、數據綁定、自定義外觀等高級功能。首先學習一個概念“數據綁定”。C#中的數據綁定就是把數據源和顯示數據的窗體中控件進行綁定,綁定后數據源和窗體控件構成了一個邏輯整體,數據源中的數據發生變化,窗體中控件顯示的數據也會發生相同的變化。Windows窗體有兩種類型的數據綁定:簡單綁定和復雜綁定。簡單綁定用于TextBox、Label等控件,只能將控件的某個屬性綁定到單個數據元素。復雜綁定是指將一個控件綁定到多個數據元素,DataGridView控件綁定數據就屬于復雜綁定,它可以一次顯示多
20、條記錄和多個字段的值。13.6.1 認識DataGridView(數據網格視圖)控件 Windows窗體工具箱中的DataGridView控件位于“數據”項中,如圖13.27所示。13.6.2 將DataGridView控件綁定到數據集 【本節示例參考:源代碼C13 Example_dgViewTest】 DataGridView控件顯示數據最簡單的方式就是綁定數據源,設置其DataSource屬性即可實現。DataGridView控件的數據源可以是數組、集合或數據集,本節介紹綁定到數據集的方法。將DataGridView控件綁定到數據集的步驟如下: 13.6.3 將DataGridView控
21、件綁定到數據視圖【本節示例參考:源代碼C13 Example_dgViewTest】在用DataGridView控件顯示數據的時候,常常并不需要顯示表中的全部內容,可能需要顯示根據某個條件設定的內容,如只顯示學生信息表中的女生,你可能想到利用SQL語句重新查詢數據庫中的數據,這樣是可以實現。使用數據視圖可以利用已經獲得的數據表,不需要重新進行數據查詢,在數據連接斷開后也可以實現。數據視圖的概念和數據庫中的視圖概念相似,可用于排序、篩選數據表等操作。視圖是為了滿足數據的不同需求而存在的,數據庫中一個表的數據可以有多個視圖,這些視圖并不影響原始的數據。如果把數據表中的記錄看做一個人,那么視圖就像這
22、個人穿的不同衣服,就有不同的形象,而實質上還是同一個人。視圖最常用的屬性就是進行數據綁定,其重要功能是可以根據表達式或行狀態進行行的過濾,通過設置RowFilter屬性可以利用表達式進行過濾。13.6.4 保存DataGridView控件修改后的數據【本節示例參考:源代碼C13 Example_dgViewTest】利用DataGridView控件顯示了數據后,單元格都是可以編輯的,編輯后的數據如何保存到數據庫中呢?其實很簡單,使用前邊學習過的“保存數據集中的數據”的方法,這里就不再詳細講述,只給出示例代碼。打開項目Example_dgViewTest,在窗體文件frmStudent中添加按鈕
23、“btnSave”,“Text”屬性設為“保存”,用來保存DataGridView控件修改后的數據。按鈕“btnSave”的“Click”事件處理方法代碼如下:01private void btnSave_Click(object sender, EventArgs e)02 03 DialogResult result = MessageBox.Show(要將修改保存到數據庫嗎?,操作提示, MessageBoxButtons.OKCancel,MessageBoxIcon.Question);04 if (result =DialogResult.OK)05 06 SqlCommandBu
24、ilder bulilder = new SqlCommandBuilder(ada);07 ada.Update(ds,student);08 MessageBox.Show(保存成功);09 10 13.7 綜合示例留言板 前面學習了DataReader、DataSet、DataAdapter、DataGridView控件,現在來做一個稍微復雜的例子,綜合運用這些控件的功能來實現。 【問題:開發一套用于留言的小留言板】,實現的功能如下: 查詢出用戶名 查詢出相關的留言內容 用戶發表留言13.7.1 數據庫設計 數據庫設計要求如下: 數據庫名稱:MessageBoard,數據庫表UserIn
25、fo所有字段均不允許為空,表UserInfo字段見表.2 創建項目,設計窗體界面 (1)創建項目名稱為MessageBoard,窗體名稱為frmMessage。 (2)設計frmMessage窗體如圖13.34所示。13.7.3 設置窗體中DataGridView的屬性 選中DataGridView控件,在屬性窗口中找到Columns屬性,打開列編輯器,在其中添加如圖13.35所示的幾列,并把每一列打DataPropertyName屬性設為數據表中對應的列名。其中“標識”列對應的是MessageBoard數據表中的主鍵MessageId,這一列不讓用戶看到,也不能修改,所以把它的Visible屬性設為False,把ReadOnly屬性設為True。13.7.4 填充數據集,顯示數據 在窗體中聲明全局變量,包括數據庫連接字符串、數據集、適配器和數據連接對象,并
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030中國定子行業市場發展分析及發展趨勢與投資前景研究報告
- 2025-2030中國嬰兒連褲背心行業市場深度調研及市場供需與投資價值研究報告
- 2025-2030中國女性護理行業深度發展研究與“十四五”企業投資戰略規劃報告
- 2025-2030中國夾板鞋行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國太陽能熱利用行業全景調研與發展戰略研究咨詢報告
- 2025-2030中國天然食用色素成分行業市場發展趨勢與前景展望戰略研究報告
- 建筑物自來水系統行業直播電商戰略研究報告
- 2025-2030中國大豆加工市場供需形勢預測及未來營銷格局分析研究報告
- 2025-2030中國大學科技園行業市場現狀供需分析及投資評估規劃分析研究報告
- 音樂點播電視節目播出服務行業直播電商戰略研究報告
- 《中國名山介紹模板》課件
- 粘液囊腫病例
- 如何幫助大學生克服游戲成癮問題
- Rational Rose 建模-家庭收支管理系統
- 旅游策劃期末試卷B卷-旅游策劃(哈工大出版社)配套材料
- 生物制藥技術專業建設方案
- TY/T 1106-2023群眾體育賽事活動運營服務規范
- 無錫星洲工業園低碳園區規劃方案
- 北師大版心理健康六年級上冊第十四課欣賞我自己 課件
- 小班語言繪本《報紙上的洞洞》
- 宴席設計與菜品開發第二版勞動版宴席菜肴與菜單設計課件
評論
0/150
提交評論