《程式设计》PPT课件.ppt

上传人:牧羊曲112 文档编号:5640383 上传时间:2023-08-05 格式:PPT 页数:52 大小:719.50KB
返回 下载 相关 举报
《程式设计》PPT课件.ppt_第1页
第1页 / 共52页
《程式设计》PPT课件.ppt_第2页
第2页 / 共52页
《程式设计》PPT课件.ppt_第3页
第3页 / 共52页
《程式设计》PPT课件.ppt_第4页
第4页 / 共52页
《程式设计》PPT课件.ppt_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《《程式设计》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《程式设计》PPT课件.ppt(52页珍藏版)》请在三一办公上搜索。

1、CH08,資料庫程式設計,ADO.NET資料庫程式設計,資料庫觀念,在上一章介紹過檔案系統之後,這一章要介紹的是另一個更重要的機制-資料庫系統。資料庫也是一個檔案,但是和檔案系統有所不同的是,資料庫提供了結構化的資料儲存和檢索方式,讓查詢和存取更有效率。檔案系統可以幫助我們將檔案儲存在硬碟(或是其他的媒介)當中,待需要的時候再載入電腦的記憶體當中。但是儲存於硬碟上的檔案是透過目錄與檔名的方式來存放,檔案的內容則是各種文字或是Binary Code,與現實生活當中的資料結構差異太大,往往並不容易分類搜尋或是檢索。而資料庫就是在這個狀況下誕生的機制,它可以幫助使用者(或是程式設計師)以更具有結構的

2、方式來儲存資料。,ADO.NET資料庫程式設計,資料庫觀念,這個畫面是某公司的訂單輸入畫面,您會發現它包含了相當多不同類型的資料,例如客戶的資料(包含送貨地址)、公司內的業務人員、要訂購的產品、數量與金額等。,如果這些資料都透過檔案系統來儲存,當我們要利用電腦進行分類(例如找到所有1999年訂購白起司的客戶)恐怕是相當困難。因此就有了Access、SQL Server、Oracle等資料庫系統來幫助我們,對這些複雜的資料進行處理。,ADO.NET資料庫程式設計,資料庫觀念,我們可以將複雜的單據,化作單純的表格形式(我們稱之為資料表),將同一類的資料儲存在一起方便管理。例如,底下是幾個不同的資料

3、表(分別是客戶資料、產品資料、以及訂單資料):,ADO.NET資料庫程式設計,資料庫觀念,一個資料表當中,會有許多的記錄:,資料錄具有多的欄位,我們稱之為資料欄(Data Column),每一筆這樣的記錄我們稱為資料錄(Data Row),因此,一筆資料錄當中,有多個欄位,每個欄位就可以儲存不同的資料,有點類似Excel的sheet,讓使用者可以輕鬆的將資料儲存到資料庫中。資料存入資料庫之後,我們就可以針對特定的欄位排序或是以特定的條件搜尋。,例如,我們可以透過簡單的指令碼找出上圖這個訂貨主檔資料表當中,客戶名稱為東遠銀行的所有訂單資料,並且可以依照訂購的日期先後順序來排序顯示出來。,ADO.

4、NET資料庫程式設計,資料庫觀念,我們還可以將兩三個不同的資料表加以關聯,利用多重條件找出符合的資料:,資料庫不僅可以支援單一條件單一資料表的搜尋,還可以讓資料表之間交叉比對,例如:找出公司地址在台北市且今年訂單總運費超過5000元的客戶名單。(這些客戶可能我們要換一家更便宜的市區快遞公司來送貨),ADO.NET資料庫程式設計,資料庫對VB.NET開發人員的意義,我們可以透過資料庫現有的這些功能,幫助我們設計的資訊系統來存取資料。資料庫本身均包含搜尋、排序、以及管理功能,絕大部分的資料庫也支援標準的SQL語言,讓開發人員或是使用者可以透過簡單的SQL語法來操作資料庫中的資料,對資料進行搜尋、新

5、增、修改、刪除等功能。,因此,Visual Basic 2005的開發人員,在撰寫資料庫應用程式前,可以在資料庫中先建立資料表,待資料表建立完成之後,再透過程式來新增或是編輯資料。在程式運作的過程當中,資料的儲存和搜尋,都是透過資料庫來完成的,而Visual Basic 2005所開發的程式,則負責提供使用者操作介面,讓程式的使用者可以在畫面上輸入資料,進行資料的驗證,最後透過程式碼將資料儲存到資料庫中。,ADO.NET資料庫程式設計,資料庫對VB.NET開發人員的意義,畫面上的使用者介面您應該相當熟悉,多半是TextBox與Label,再加上一個ToolStrip(工具列)就完成了。但是程式

6、的核心絕對不只是畫面上的操作方式,例如搜尋、上下筆的切換、或是修改儲存等等,重點是如何把使用者輸入的資料儲存到資料庫中,以及如何讀取出來。,ADO.NET資料庫程式設計,資料庫對VB.NET開發人員的意義,當我們利用VS2005建立出上頁的輸入畫面,並且透過程式碼讓使用者輸入的資料存入資料庫之後,您可以檢視資料庫中的內容,將會呈現出下面這樣的樣式:,ADO.NET資料庫程式設計,基本SQL語法,我們前面提到過,絕大部分的資料庫都支援SQL語法,可支援資料庫的新增、修改、刪除與搜尋功能。同樣的,我們剛才建立的SQL Server 2005 Express資料庫也是,我們先看資料的搜尋部份。,Se

7、lect語法,資料的搜尋可以使用Select語法,這個命令會傳回資料表當中符合條件的記錄,符合條件的記錄可能不只有一筆,而是多筆資料,我們稱這些搜尋出來的結果(一筆或多筆資料)為檢視表(view)。,範例:,ADO.NET資料庫程式設計,Select語法,上面的Select命令,所搜尋出符合條件的資料會回傳到VB程式碼中,成為一個View,填入DataGridView控制項中。,得到的資料如下圖,作者撰寫了一個SQL語法測試程式(CH08-01),您可以在TextBox當中輸入Select語法,按下執行鈕之後,即可將資料顯示在下方的DataGridView中:,ADO.NET資料庫程式設計,S

8、elect語法,Select語法也支援排序功能,您只須要在Select語法的後面加上Order By 欄位名稱,即可針對搜尋到的資料排序:,其中的*代表所有的欄位(在您需要取得資料表中所有欄位時,可以省去輸入欄位名稱),執行的結果如上圖。,ADO.NET資料庫程式設計,Select語法,Order By後面若有多個欄位,可以,分隔,您可以在欄位後面接上Asc或Desc,指定該欄位的排序方式是由小到大(Asc)還是由大到小(Desc),當您省略時,以Asc為預設值。,您也可以同時以多個欄位來排序,例如上面這樣的SQL語法,可以取得先以城市欄位由大到小排序,當城市欄位相同時,再以公司名稱由小到大排

9、序的資料,ADO.NET資料庫程式設計,Select語法,除了Order By之外,Select最重要的功能是資料的過濾篩選,您可以透過Where關鍵字來決定讀取資料時哪些要顯示出來。,ADO.NET資料庫程式設計,Select語法,除了欄位名稱=值之外,您還可以透過Like關鍵字,搜尋局部相同的資料,例如:,由於前面提過Like的意思是,字串中只需要部分相同,而不需全部相同,即被視為符合,因此連絡人 like 陳%這個條件,代表連絡人名稱開頭的一個字只要是陳,都會被篩選出來。而%符號的意思是,代表不確定數量的任何文字,因此只要連絡人欄位的開頭是陳的資料,都符合過濾的條件。,ADO.NET資料

10、庫程式設計,Insert語法,除了搜尋之外,另一個很重要的功能,就是資料的新增,資料新增語法結構如下:,例如:,請注意,在SQL語法當中,所有的字串是以單引號所包圍的文字。例如:,這些以單引號所包圍的文字,都是字串。,ADO.NET資料庫程式設計,Delete語法,Delete語法的功能為刪除記錄,您可以刪除特定一筆資料,或是刪除任何符合條件的資料,其語法如下:,同樣的Where後面也可比照Select命令一樣,透過And,Or,或是Like等關鍵字,組出適當的刪除條件,凡是符合條件的資料都會被刪除,例如:,上面這樣的指令,會刪除所有在城市欄位中資料為台北市的客戶資料。請注意,如果您直接輸入:

11、,而忽略where子句,資料庫將會不問條件,一律將客戶資料表中所有的資料刪除。,ADO.NET資料庫程式設計,Update語法,Update語法則可用來更新資料庫中的資料,其語法如下:,和Delete敘述一樣,如果您忽略Where子句,系統會不問條件的一律將該資料表中所有的記錄都加以修改(修改的欄位與內容值依照Set子句決定)。在程式中我們有兩種更新資料的場合,其中一種是修正資料,另一種是計算出某種結果。,ADO.NET資料庫程式設計,Update語法,存放數字的欄位,此為Boolean欄位,只有Yes或No兩種可能(分別以1或0)來表示,將會把所有的產品設為不再銷售。(但一般我們不常這麼做,

12、除非公司準備結束營業),ADO.NET資料庫程式設計,Update語法,存放數字的欄位,此為Boolean欄位,只有Yes或No兩種可能(分別以1或0)來表示,上面這段指令,將會把所有庫存量小於5的資料設為不再銷售。這類的更新處理我們稱之為資料修正。,ADO.NET資料庫程式設計,Update語法,存放數字的欄位,此為Boolean欄位,只有Yes或No兩種可能(分別以1或0)來表示,上面這段指令將所有單價小於10的產品,通通調漲價格,增加一成的售價。這種更新即是為了計算出某種結果。,ADO.NET資料庫程式設計,如何透過VB程式碼存取資料庫,CH08-03專案,執行左方SQL Command

13、,執行左方的Select SQL Command並將回傳值(Data View)填入下方的DataGridView當中。,DataGridView,ADO.NET資料庫程式設計,透過DbAccess類別存取資料庫,在這裡指定要存取的SQL Server 2005 Express資料庫。,執行TextBox中的Select命令,傳回的資料會填入DataTable中,ADO.NET資料庫程式設計,透過DbAccess類別將資料寫回資料庫,這邊填入要執行的SQL指令,ADO.NET資料庫程式設計,透過DbAccess類別和ADO.NET來處理資料,我們撰寫了DbAccess類別來幫我們完成資料庫存取

14、的功能,您可以透過這個DbAccess類別完成絕大部分的資料庫存取需求,而存取資料庫的核心程式碼其實位於DbAccess類別當中。我們會在後面再介紹DbAccess類別中的程式碼。前面我們已經明白如何透過DbAccess類別將資料庫中的資料讀取出來,而回傳的資料結構就是DataTable,接著我們要來看,如何透過DataTable來處理資料,例如將資料顯示到畫面上供使用者編輯或瀏覽。在.NET Framework當中,對資料庫的處理是透過ADO.NET架構,ADO.NET是一組專門負責資料庫存取與運作的類別,它可以讓開發人員以一致的方式存取資料來源。不用因為需要存取不同的資料來源(資料庫),就

15、針對不同的資料來源撰寫個別的程式碼。而前面我們介紹過的DataTable,就是ADO.NET所提供的一個類別。,ADO.NET資料庫程式設計,DataTable與DataRow類別,ADO.NET資料庫程式設計,將畫面上的資料寫回資料庫,cNorthWind.MDF,ShowData(ByVal id As Integer)將第N筆資料顯示在畫面上,ADO.NET資料庫程式設計,ADO.NET資料庫程式設計,將資料庫中讀取到的資料填入畫面,cNorthWind.MDF,ToolStrip_btn_Save.Click,ADO.NET資料庫程式設計,ADO.NET資料庫程式設計,ADO.NET資

16、料庫程式設計,將畫面上目前這筆資料刪除,cNorthWind.MDF,ToolStrip_btn_Delete_Click,ADO.NET資料庫程式設計,刪除的功能比較容易處理,只需要抓取到頁面上目前顯示的資料錄編號,然後透過底下的SQL語法將其刪除即可,ADO.NET資料庫程式設計,新增一筆資料,新增的功能對於表單上的使用者介面來說,只是清空畫面,提供一個使用者可以輸入的空間而已。但是請注意,我們在使用者按下新增鈕時,除了要清空畫面之外,還要透過Insert指令,在資料庫中新增了一筆空白的記錄。並且把該筆記錄帶出到畫面上,ADO.NET資料庫程式設計,ADO.NET資料庫程式設計,搜尋功能,

17、搜尋的部分我們額外建立了另一張表單,使用者可以在這個表單上輸入搜尋條件,然後按下搜尋鈕。當使用者按下搜尋鈕之後,該表單會直接開啟資料庫進行搜尋動作,如果找到符合的資料,就呼叫主頁面上的ShowData函式並傳入記錄編號,將指定的記錄顯示出來。,ADO.NET資料庫程式設計,搜尋功能,cNorthWind.MDF,btn_search_Click(Search.vb),ADO.NET資料庫程式設計,ADO.NET資料庫程式設計,ADO.NET資料庫程式設計,如何將照片儲存到資料庫中,ADO.NET資料庫程式設計,將照片儲存到資料庫,getByte函式:傳入image屬性(也就是圖片本身),會回傳

18、一個Byte()陣列(將其存入資料庫),內容是剛才傳入的image物件的檔案實體。,ADO.NET資料庫程式設計,將資料庫中的照片顯示出來,ADO.NET資料庫程式設計,DbAccess類別,前面說過,我們撰寫了DbAccess類別來幫我們完成資料庫存取的功能,您可以透過這個DbAccess類別完成絕大部分的資料庫存取需求,而存取資料庫的核心程式碼其實位於DbAccess類別當中。,ADO.NET資料庫程式設計,ADO.NET中的資料庫運作模式,ADO.NET資料庫程式設計,ADO.NET中如何對資料庫執行異動(新增、修改、刪除),ADO.NET資料庫程式設計,ADO.NET中如何對資料庫建立

19、連線,ADO.NET要與資料庫連線,必須透過連線字串,在連線字串中可以決定資料庫的類型、帳號密碼、連線方式等資訊。,Data Source指定了資料庫的類型,在這邊我們使用的是SQL Express資料庫,而資料庫的位置由AttachDbFilename項目來決定。Integrated Security=true;意思是指資料庫的使用權限是透過系統管理,在執行程式時,會依照目前使用者的系統帳號來嘗試開啟資料庫。,ADO.NET資料庫程式設計,透過DataAdapter來讀取資料,SqlDataAdapter可以針對指定的資料連線(conn)執行特定的SQL指令,並以Fill指令,將回傳的結果(

20、DataView)填入dt,透過SqlDataAdapter物件的Fill方法來執行SQL命令(請注意我們有傳入conn這個剛才在建立好的資料庫連線物件),並且取得資料;如此一來,我們就可以取得需要的資料,再透過對DataTable的操作來完成程式當中需要的功能。,ADO.NET資料庫程式設計,透過DataCommand來執行SQL命令,當我們要對資料庫做寫入的動作時,則透過DataCommand這個物件。我們在DbAccess類別當中,建立了ExecuteCmd這個Method來處理。,您會發現這個ExecuteCmd是一個多載的方法,ADO.NET資料庫程式設計,8-5-3 透過DataC

21、ommand來執行SQL命令,主要的功能在程式6-21行,我們透過建立SqlCommand物件,傳入SQL命令和剛才建立好存放在Private變數中的連結物件Conn,並且視需要(若SQL命令中有.這樣的參數)將傳入的parameter值加入第8行建立的SqlCommand(dc)物件當中,最後再透過SqlCommand物件的ExecuteNonQuery方法來執行這段SQL指令。,ADO.NET資料庫程式設計,離線資料庫觀念,整個.NET在微軟最初建構時的核心價值觀,除了物件導向就是網際網路。所有.NET設計架構,都是為了迎合未來開發人員,以及資訊系統在網際網路上所有可能的需求,而企圖讓整個

22、Windows平台和網際網路做出最完美的整合。再加上XML的出現,讓資料庫的呈現方式除了傳統的關聯式資料庫之外,還有其他的可能性,而ADO.NET在與XML的整合上,明顯的比ADO要進步了許多。因此.NET Framework上的ADO.NET,在WEB資料庫程式設計的架構中,佔有相當重要的一席之地。微軟不惜冒著讓ADO.NET和ADO在物件模型上完全不同的風險,對資料庫物件做了相當大幅度的調整。過去常用的資料庫存取模式是持續連線型的,也就是程式存取資料庫必需先建立連線,然後持續透過這個連線來處理與資料庫有關的動作(新增、修改、刪除、更新等),但是這方式在今天這種多元的協同運作時代顯然不太可能

23、,舉例來說,我們常用的MSN、Skype、或是P2P下載軟體,其實本質上都需要一個資料庫來儲存個人的通訊錄、名單、或是檔案資料等。而這個資料庫顯然不是在你的電腦上而是在遠端的伺服器裡(因為你換一台電腦用同樣的帳號都入,MSN上的通訊錄清單依舊是最新的),在這種模式底下,資料庫中的資料,是有必要傳遞到另一台電腦上的,並且透過遠端的電腦進行處理。,ADO.NET資料庫程式設計,離線資料庫觀念,這時候當然就不可能(也不需要)持續保持和遠端資料庫的連線,況且連線這個動作是很耗資源的,所以沒事不要一直和資料庫連著。而在整個ADO.NET架構底下的DataTable物件(以及DataSet物件)是可以很方

24、便的在網際網路上傳遞的。由於近代的程式慢慢開始協同運作,常有兩三個不同的程式(不同位置、或是不同公司撰寫的.)必須共同合作的可能,而這兩三個程式可能位於不同的網段、甚至不同的公司或國家,那這樣要怎麼交換資料呢?微軟的ADO.NET架構也是為了因應這種SOA(服務導向架構 Service-Oriented Architecture)架構而做的修改,因此我們可以將資料直接讀入存放在DataTable中,而透過WebServices機制,直接傳遞給遠端的另一台電腦(或是另一套資訊系統),資料可以在網際網務上傳遞無礙。如果一來,遠端的協同運作就變的可能,傳統造價昂貴的EDI系統(電子數據交換)或是SCM(供應鏈管理)系統,即可大幅的降低成本,這也是面對網際網路的蓬勃發展,各家廠商所積極推動的技術。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号