第五章、 VB.NET 2008 資料庫程式設計

203
1/203 第第第VB.NET 2008 第第第第第第第 RFID 系系系系系系系系 系系系系系系系系系系系系系系系系系 系系系系系系 一, 系系系系系系系系 系系系 系系系系系系系系系系系系 ,, MS VS.NET 200 8 系系系系 VB.NET 2008 系系系系系系系系系系系 MS ACCE SS MS SQL Server 系 MySQL 系系系系系系系系系 系系 系系系系系系系系系系系 RFID 系系系系系系系 系系系 系系系系系系系系系 ;, 系系系系系系系系系 系系系系系系系系系系系系系系系系系系系系系系系系 系系 ,。 系系系系系系系系系 系系系系系系系系系系系系CH5 系系系系系系系系

description

第五章、 VB.NET 2008 資料庫程式設計. RFID 系統的後端需要有一個強大的資訊系統來接收與處理資料,而這絕大多數都與資料庫與有關,因此,本章主要教導讀者如何使用 MS VS.NET 2008 平台內的 VB.NET 2008 語言進行資料庫系統開發,以 MS ACCESS 、 MS SQL Server 與 MySQL 等為資料庫進行說明,讓讀者具備撰寫連結資料庫的 RFID 資訊系統之能力;同時,本章最後則是針對程式的封裝方式做介紹,讓開發完成後的程式可以順利封裝交付給使用者使用。本章內的所有範例程式,讀者都可以在本書光碟內的 CH5 目錄內找到並應用。. 大 綱. - PowerPoint PPT Presentation

Transcript of 第五章、 VB.NET 2008 資料庫程式設計

Page 1: 第五章、 VB.NET 2008 資料庫程式設計

1/203

第五章、 VB.NET 2008 資料庫程式設計

RFID 系統的後端需要有一個強大的資訊系統來接收與處理資料,而這絕大多數都與資料庫與有關,因此,本章主要教導讀者如何使用 MS VS.NET 2008平台內的 VB.NET 2008 語言進行資料庫系統開發,以 MS ACCESS 、 MS SQL Server 與 MySQL 等為資料庫進行說明,讓讀者具備撰寫連結資料庫的 RFID資訊系統之能力;同時,本章最後則是針對程式的封裝方式做介紹,讓開發完成後的程式可以順利封裝交付給使用者使用。本章內的所有範例程式,讀者都可以在本書光碟內的 CH5 目錄內找到並應用。

Page 2: 第五章、 VB.NET 2008 資料庫程式設計

2/203

大 綱

5-1 VS.NET 2008 開發平台介紹 5-2 VS.NET 2008 資料庫系統開發 5-3 SQL 指令 5-4 不寫程式連結資料庫 5-5 DataReader 物件讀取資料 5-6 DataReader 物件異動資料 5-7 DataSet 5-8 MS SQL Server 資料庫之連結 5-9 MySQL 資料庫之連結 5-10 程式封裝與部署 5-11 POS 銷售系統

Page 3: 第五章、 VB.NET 2008 資料庫程式設計

3/203

VS.NET 2008 資料庫系統開發

Page 4: 第五章、 VB.NET 2008 資料庫程式設計

4/203

資料庫系統開發 VS.NET 2008 具有一平台、多語系與同一種

語言可開發多種平台( Windows Form/ PDA Form/ Web Form )程式的特性

這是一個整合性的工作,雖然繁雜,但是也深具挑戰性

現今隨著開發平台的進步,程式設計師幾乎只要著重在資料庫規劃、邏輯流程與商業流程上就可以,剩下的都由平台提供的元件或物件來處理, MS VS.NET 2008 就是其中一種

Page 5: 第五章、 VB.NET 2008 資料庫程式設計

5/203

資料庫系統開發 本章並不從基礎的資料庫系統管理、系統分

析與設計談起(有興趣的讀者請見本書第三與第四章之說明)

是以實際操作 VS.NET 2008 開發平台的角度,直接帶領讀者進行資料庫程式設計開發之工作

Page 6: 第五章、 VB.NET 2008 資料庫程式設計

6/203

VS.NET 2008 開發平台介紹

Page 7: 第五章、 VB.NET 2008 資料庫程式設計

7/203

VS.NET 2008 介紹 VS.NET 2008 是微軟公司最新的資訊系統開

發平台,屬於全物件化導向開發平台 集合 VB.NET 、 C# 與 C++.NET 三種語法於

一身,且可以開發 Windows Form 、 Web Form 與 PDA 行動裝置等三種不同類型的程式

以往使用 VB 或 C++ 語法開發系統的使用者可以再不需要重新學習語法的情形下轉移到VS.NET 2008 平台上面,擁有更便利的介面設計功能與物件支援,並利用同一語言、同一平台與同一架構開發三種類型

Page 8: 第五章、 VB.NET 2008 資料庫程式設計

8/203

VS.NET 2008 介紹 完成安裝 VS.NET 2008 開發平台後,可以

從「開始」「程式集」「 Microsoft Visual Studio 2008 」「 Microsoft Visual Studio 2008 」啟動主開發平台,如圖 5-1 所示

啟動後的開發平台畫面如圖 5-2 所示,等待使用者做新專案的「建立」或是「開啟」舊專案

Page 9: 第五章、 VB.NET 2008 資料庫程式設計

9/203圖 5-1 、 VS.NET 2008 平台啟動位置

畫面

Page 10: 第五章、 VB.NET 2008 資料庫程式設計

10/203圖 5-2 、 VS.NET 2008 開發平台起始畫面

Page 11: 第五章、 VB.NET 2008 資料庫程式設計

11/203

VS.NET 2008 介紹 這裡以「建立」新專案的方式做說明,請在

圖 5-2 上的「最近使用的檔案」區塊選擇「建立」「專案」,將出現圖 5-3 的新專案設定畫面。

這裡需要設定使用的語言、開發程式類型與給定專案名稱,本書的開發程式選用的是 Visual Basic 語法,此例的程式類型以 Windows Form 程式為例,並給定專案名稱為「 CH5-1 」,最後按下「確定」完成專案起始設定

Page 12: 第五章、 VB.NET 2008 資料庫程式設計

12/203圖 5-3 、 VS.NET 2008 新專案設定畫面

Page 13: 第五章、 VB.NET 2008 資料庫程式設計

13/203

VS.NET 2008 介紹 等待一段時間後將出現如圖 5-4 的專案建立

後起始畫面,預設有一個叫做 Form1 的表單( Form ),表單是給開發人員設計使用者介面之用

所有在視窗程式中需要的介面物件都會在畫面最左方的「工具箱」內,而預設「工具箱」是呈現內縮狀態。您可以將滑鼠移動到「工具箱」上方,此時「工具箱」將會自動展開,如圖 5-5 所示。

Page 14: 第五章、 VB.NET 2008 資料庫程式設計

14/203圖 5-4 、 VS.NET 2008 新專案建立後啟始畫面

Page 15: 第五章、 VB.NET 2008 資料庫程式設計

15/203圖 5-5 、工具箱展開畫面

Page 16: 第五章、 VB.NET 2008 資料庫程式設計

16/203

VS.NET 2008 介紹 請記得到此為止,整個專案是呈現未存檔的

狀況,此時可以點選圖 5-6 上面的「存檔按鈕」進行存檔,請利用「瀏覽」選擇儲存「位置」,本範例將其儲存至系統桌面,確定後按下「儲存」按鈕,最後可以在桌面上看到剛剛儲存的專案目錄 CH5-1 ,如圖 5-7所示

Page 17: 第五章、 VB.NET 2008 資料庫程式設計

17/203圖 5-6 、儲存專案畫面

Page 18: 第五章、 VB.NET 2008 資料庫程式設計

18/203圖 5-7 、桌面 CH5-1 專案目錄畫面

Page 19: 第五章、 VB.NET 2008 資料庫程式設計

19/203

VS.NET 2008 介紹 您可以點選進入 CH5-1 的目錄裡面瀏覽整

個檔案結構,會看到如圖 5-8 的畫面, CH5-1.sln 就是整個開發專案的起始進入點,也就是下次您要再開起這個專案時,可以選擇在這個檔案上用滑鼠左鍵快按兩下,就可以再度將專案打開,繼續後面的開發作業

Page 20: 第五章、 VB.NET 2008 資料庫程式設計

20/203

圖 5-8 、專案 CH5-1 目錄內容

Page 21: 第五章、 VB.NET 2008 資料庫程式設計

21/203

VS.NET 2008 介紹 除了 CH5-1.sln 之外,可以看到還有一個 CH5-1 的

目錄,裡面儲存的就是專案的所有介面與程式相關設定與檔案,進入 CH5-1 目錄後的畫面如圖 5-9所示。

目前專案只有一個表單 Form1 ,所以可以看到有Form1.Designer.vb 、 Form1.vb 與 Form1.resx 等三個相關檔案; .NET 平台內是採取「畫面」與「程式」分離的設計方式,因此儲存時也是各自有不同的檔案, Form1.Designer.vb 就是畫面設定檔,而 Form1.vb則是程式檔案

Page 22: 第五章、 VB.NET 2008 資料庫程式設計

22/203

VS.NET 2008 介紹 CH5-1 目錄內有另外一個子目錄 bin 需要介紹,這個目錄關係到未來專案的發布,同時在開發過程中 .NET 也會將每次執行結果產生的執行檔與中間檔存放於此,此部分我們將在稍後做介紹

Page 23: 第五章、 VB.NET 2008 資料庫程式設計

23/203

圖 5-9 、專案 CH5-1 程式目錄內容

Page 24: 第五章、 VB.NET 2008 資料庫程式設計

24/203

VS.NET 2008 介紹 讓我們再回到開發平台畫面,在畫面右方有兩個小視窗,分別是「方案總管」與「屬性」視窗,「方案總管」內掌管了專案內的所有檔案,因此與實際檔案結構是一對一的狀態,但是預設是不出現所有檔案。如圖5-10 選擇「顯示所有檔案」按鈕,就可以看到圖 5-9 內的所有目錄與檔案

Page 25: 第五章、 VB.NET 2008 資料庫程式設計

25/203

顯示所有檔案

圖 5-10 、專案 CH5-1 方案總管畫面

Page 26: 第五章、 VB.NET 2008 資料庫程式設計

26/203

VS.NET 2008 介紹 另一個「屬性」視窗可以讓您設定物件(包含表單)的外觀樣式等資料,例如圖 5-11我們將 Form1 上的標題顯示文字改成「我是表單一」,可以透過屬性視窗內的「 Text 」屬性來完成,直接輸入,馬上就可以看到變化

Page 27: 第五章、 VB.NET 2008 資料庫程式設計

27/203圖 5-11 、專案 CH5-1 屬性視窗畫面

Page 28: 第五章、 VB.NET 2008 資料庫程式設計

28/203

VS.NET 2008 介紹 讓我們再談回剛剛的 bin 目錄,進入 bin 目錄後可

以發現有兩個預設的目錄,分別是「 Debug 」與「 Release 」,如圖 5-12 所示。

在專案還在「開發階段」,開發過程的中間檔案,包含可執行檔與中介檔等都會被放置到 Debug 目錄中,隨時會有更新的動作,因此取名為「 Debug 」;但是等專案整個開發告一個段落後,要正式將專案封裝「發佈」給客戶時,就需要將建置後的可執行檔與中介檔切換放到 Release 目錄中,以免發生錯給檔案等事情,所以取名為「 Release 」

Page 29: 第五章、 VB.NET 2008 資料庫程式設計

29/203

圖 5-12 、專案 CH5-1 內 bin 目錄畫面

Page 30: 第五章、 VB.NET 2008 資料庫程式設計

30/203

VS.NET 2008 介紹 下面讓我們來練習上述的「開發」與「發佈」動作,首先請再進入到 Debug 目錄中,可以發現欲設只有一個檔案,如圖 5-13 所示

Page 31: 第五章、 VB.NET 2008 資料庫程式設計

31/203

圖 5-13 、專案 CH5-1 內 bin\Debug 目錄畫面

Page 32: 第五章、 VB.NET 2008 資料庫程式設計

32/203

VS.NET 2008 介紹 此時再回到 VS.NET 2008 開發平台,選擇

「開始偵錯」按鈕,如圖 5-14 所示,就可以看到目前專案開發的實際執行畫面,如圖5-15

Page 33: 第五章、 VB.NET 2008 資料庫程式設計

33/203圖 5-14 、執行專案 CH5-1

Page 34: 第五章、 VB.NET 2008 資料庫程式設計

34/203圖 5-15 、專案 CH5-1 執行畫面

Page 35: 第五章、 VB.NET 2008 資料庫程式設計

35/203

VS.NET 2008 介紹 接著,再回到 bin\Debug 目錄中,您可以發

現多出了三個檔案,其中有一個就是可執行檔 CH5-1.exe ,如圖 5-16 ,未來要發佈給客戶的也就是這些檔案,本章最後一節會敎大家怎麼製作可安裝光碟

Page 36: 第五章、 VB.NET 2008 資料庫程式設計

36/203

圖 5-16 、專案 CH5-1 執行後 bin\Debug 目錄畫面

Page 37: 第五章、 VB.NET 2008 資料庫程式設計

37/203

VS.NET 2008 介紹 相反地,如果您切換到 bin\Release 目錄,

您可以發現裡面空空如也,如圖 5-17 ,當然這是合理的,因為尚未確認目前的專案就是最後可以進行發佈的專案

Page 38: 第五章、 VB.NET 2008 資料庫程式設計

38/203

VS.NET 2008 介紹 如果已經確認目前專案的狀態是可以進行發佈的最後狀態,那我們就需要把可執行檔等檔案產生到 Release 目錄,以後所有安裝光碟製作的來源就來自於這個目錄,才不至於發生錯抓檔案的情事。您可以選擇「專案」「 CH5-1 屬性」,來進行這樣的切換作業,如圖 5-17 所示

Page 39: 第五章、 VB.NET 2008 資料庫程式設計

39/203

圖 5-17 、專案 CH5-1 bin\Release 目錄畫面

Page 40: 第五章、 VB.NET 2008 資料庫程式設計

40/203

VS.NET 2008 介紹 接著可以看到圖 5-18 的專案屬性設定畫面,

請選擇「編譯」,可以看到「建置輸出路徑」的設定,請確認路徑是 bin\Release 。這時候就可以開始建置產生最後版本的可執行檔案

如圖 5-19 ,請選擇「建置」「建置 CH5-1 」。順帶一提,您可以在圖 5-18 的畫面內選擇「應用程式」,可以看到「啟動表單」的設定,從此決定哪個表單是系統執行時要看到的第一個畫面,類似網路的首頁

Page 41: 第五章、 VB.NET 2008 資料庫程式設計

41/203圖 5-18 、專案 CH5-1 bin\Release 目錄切換畫面

Page 42: 第五章、 VB.NET 2008 資料庫程式設計

42/203圖 5-19 、專案屬性設定畫面

Page 43: 第五章、 VB.NET 2008 資料庫程式設計

43/203

VS.NET 2008 介紹 等待一段建置時間後,建置完成後,我們可

以再進入 bin\Release 目錄內,會發現產生了跟 bin\Debug 內相同的檔案,如圖 5-20 ,但可以確認的是這裡的檔案是可以當成最後被發佈使用的

Page 44: 第五章、 VB.NET 2008 資料庫程式設計

44/203圖 5-20 、專案建置畫面

Page 45: 第五章、 VB.NET 2008 資料庫程式設計

45/203

VS.NET 2008 介紹 接下來我們可以開始進行個簡單的介面設計

與程式撰寫,如圖 5-21 所示,從「工具箱」內選用「 Button 」物件,並從屬性視窗將其顯示文字( Text 屬性)改成「請按我」,如圖 5-21 。

再來可以在這個按鈕上,使用者會有的動作或是事件內撰寫程式碼,進入程式碼編輯畫面的方式是在按鈕上用滑鼠左鍵快按兩下就可以,如圖 5-22

Page 46: 第五章、 VB.NET 2008 資料庫程式設計

46/203

圖 5-21 、專案 CH5-1 建置後 bin\Release 目錄畫面

Page 47: 第五章、 VB.NET 2008 資料庫程式設計

47/203

VS.NET 2008 介紹 如圖 5-22 , Button1_Click 中的 Button1 是

物件名稱, Click 是事件,代表使用者進行點按這個按鈕的動作,物件不同的事件可以在圖 5-22 的事件切換選項中進行切換。在此寫個簡單的指令,當使用者按下按鈕後,跳出一個訊息框,歡迎使用者,指令如下( 圖 5-23)

MessageBox.Show("歡迎光臨! ")

Page 48: 第五章、 VB.NET 2008 資料庫程式設計

48/203圖 5-22 、在專案 CH5-1 中建立並使用 Button 物件畫面

Page 49: 第五章、 VB.NET 2008 資料庫程式設計

49/203圖 5-23 、專案 CH5-1 程式碼編輯畫面 I

事件切換選項

Page 50: 第五章、 VB.NET 2008 資料庫程式設計

50/203

VS.NET 2008 介紹 最後可以來執行看看結果是否符合規畫與預想的結果,如果你看到圖 5-24 ,那就恭喜妳,大功告成

Page 51: 第五章、 VB.NET 2008 資料庫程式設計

51/203圖 5-24 、專案 CH5-1 程式碼編輯畫面 II

Page 52: 第五章、 VB.NET 2008 資料庫程式設計

52/203

VS.NET 2008 介紹 最後可以來執行看看結果是否符合規畫與預想的結果,如果你看到圖 5-25 ,那就恭喜妳,大功告成

Page 53: 第五章、 VB.NET 2008 資料庫程式設計

53/203圖 5-25 、專案 CH5-1 執行畫面 II

Page 54: 第五章、 VB.NET 2008 資料庫程式設計

54/203

VS.NET 2008 資料庫系統開發

Page 55: 第五章、 VB.NET 2008 資料庫程式設計

55/203

VS.NET 2008 資料庫系統開發 在 VS.NET 2008 的平台中用來連結資料庫

的元件或物件因為不同資料庫的架構設計可以區分成( 1 ) OLEDB 、( 2 ) MS SQL Server 、( 3 ) Oracle 與( 4 ) ODBC 等四大塊

其中( 2 )與( 3 )是特別針對MS SQL Server 與 Oracle兩種資料庫系統所量身訂做的

Page 56: 第五章、 VB.NET 2008 資料庫程式設計

56/203

VS.NET 2008 資料庫系統開發 如圖 5-26 所示,資料庫系統的最外層是資

料庫管理系統( Database Management System, DBMS ),再來則是資料庫( Database ),下去就是資料表( Table ),最後是欄位( Field ),資料就存在資料表的欄位中,也因為這樣當讀者要存取到資料表內的資料時一定要先通過 DBMS 與 Database ,最後才能透過 SQL指令去操作資料表

Page 57: 第五章、 VB.NET 2008 資料庫程式設計

57/203

資料庫管理系統(DBMS)

資料庫1

資料庫2

資料表

資料表

欄位

欄位

Connection物件

Command物件

DataAdapter物件DataSet物件 DataReader物件

顯示資料

圖 5-26 、資料庫與 .NET 平台資料庫物件對應圖

Page 58: 第五章、 VB.NET 2008 資料庫程式設計

58/203

VS.NET 2008 資料庫系統開發 圖 5-27則說明了使用 VS.NET 2008 平台開

發資料庫的物件架構圖,讀者只要把握此架構圖就可以順利開發出資料庫系統。此架構圖是搭配資料庫系統的架構而設計

Page 59: 第五章、 VB.NET 2008 資料庫程式設計

59/203

VS.NET 2008 資料庫系統開發 在 VS.NET 2008 中,負責通過 DBMS 與 Databas

e 這兩個管理員是由「 Connection 」物件來負責(圖 5-26 ),所以「 Connection 」物件身上一定需要攜帶有帳號與密碼等資訊,我們將其稱為連線字串( Connection String ),網路上有專門針對不同資料庫的連線字串整理的網站, 讀者可以參考 http://www.connectionstrings.com/

Page 60: 第五章、 VB.NET 2008 資料庫程式設計

60/203

VS.NET 2008 資料庫系統開發 接著就可以看到資料表,此時需要透過 SQL指令去操作資料表,這項工作就由「 Command 」物件負責, SQL 指令(請見 5-3 節)執行完畢後會產生一個虛擬的資料表結果,「虛擬」表示這個資料結果也是一個有資料集合的資料表,只是並不實際存在於資料庫中,而是在記憶體或是物件中,也就是圖 5-27 中的「 DataReader 」物件或是「 DataSet 」物件,最後才從這些物件取用,顯示或操作資料。

Page 61: 第五章、 VB.NET 2008 資料庫程式設計

61/203

DBMS/DB

Connection物件

Command物件

DataReader物件ExecteNonQuery可異動資料

DataAdapter物件 DataReader物件

ExecuteReader唯讀

DataSet物件

CommandBuilder物件

On-line線上作業模式

Off-line離線作業模式

圖 5-27 、 .NET 平台開發資料庫系統物件架構圖

Page 62: 第五章、 VB.NET 2008 資料庫程式設計

62/203

VS.NET 2008 資料庫系統開發 了解物件的功能後要再繼續談圖 5-27 , VS.NET 2

008 中為了節省資料處理時間與資料庫系統負擔,設計兩種連線方式,分別是「即時連線( on-line )」與「非即時連線( off-line )或是離線存取」兩種方式,後者是將資料集暫放於記憶體內,程式直接對記憶體作讀寫。兩種方式使用的物件與完成路徑不完全相同(圖 5-27

Page 63: 第五章、 VB.NET 2008 資料庫程式設計

63/203

VS.NET 2008 資料庫系統開發 但不管是哪一條路,不可避免的是都需要有 Conn

ection 與 Command 物件,離線作業因為最後還是要將資料更新回資料庫,否則所有的異動作業都只是針對記憶體, 所以另外有一個負責更新的物件, 稱為「 CommandBuilder 」物件,表 5-1 整理了上述物件的名稱與各自的功能。

Page 64: 第五章、 VB.NET 2008 資料庫程式設計

64/203

表 5-1 、 VS.NET 2008 資料庫物件功能說明編號

物件名稱 主要功能

1 Connection負責連結資料庫系統與資料來源需要連線字串 (http://www.connectionstrings.com/)

2 Command 負責執行 SQL 指令

3 DataReader

1.負責擷取 Comand 物件執行完 SQL 指令後的結果 ( 資料 )2.分成唯讀與可異動資料兩種模式3.採即時連線( on-line )方式作業

4 DataAdapter1.負責擷取 Comand 執行完 SQL 指令後的結果2.採離線( off-line )方式作業

5 DataSet離線( off-line )作業下資料儲存物件,所有異動作業都是針對此物件

6 CommandBuilder負責離線( off-line )作業最後的資料更新回資料庫

Page 65: 第五章、 VB.NET 2008 資料庫程式設計

65/203

VS.NET 2008 資料庫系統開發 VS.NET 2008 中有許多分類好的類別,等

待讀者去使用並建立物件,這些類別分類在VS.NET 2008 中稱為名稱空間( namespace )。因為類別與物件是主從關係,類別是藍圖,物件是藍圖的實作,所以使用這些物件前都需要引用正確的類別或是名稱空間,引用的指令是 Imports ,表 5-2 整理出四大類資料庫物件的名稱空間,這是很重要的一個步驟,如果忘了這個步驟則永遠無法建立出表 5-1 中的物件。

Page 66: 第五章、 VB.NET 2008 資料庫程式設計

66/203

VS.NET 2008 資料庫系統開發 以 SQL Server 類別為例,需要撰寫的引用指令為:

Imports System.Data.SqlClient 指令碼撰寫的位置是在 Public Class …End C

lass 最外面,如圖 5-28 所示

Page 67: 第五章、 VB.NET 2008 資料庫程式設計

67/203圖 5-28 、 VB.NET 引用名稱空間畫面

Page 68: 第五章、 VB.NET 2008 資料庫程式設計

68/203

表 5-2 、 VS.NET 2008 中資料庫物件的名稱空間列表

編號 物件類別 名稱空間 適用資料庫

1 OLEDB System.Data.OleDb MS ACCESS …

2 SQL Server System.Data.SqlClient MS SQL Server

3 Oracle System.Data.OracleClient Oracle

4 ODBC System.Data.Odbc MySQL 等大部分資料庫

Page 69: 第五章、 VB.NET 2008 資料庫程式設計

69/203

VS.NET 2008 資料庫系統開發 綜合上面所述,整個 VS.NET 2008 資料庫程式開

發可以分成下面五大步驟,分別是:– Imports 物件類別(表 5-2 )– 建立 Connection 物件開啟資料庫連線– 建立 Command 物件透過 sql 指令進行資料庫

操作 ( 讀取 /寫入 )– 建立 DataReader 或 DataAdapter 等物件擷取 S

QL 指令執行的結果– 關閉資料庫連線

上面步驟是不可以顛倒順序的,如圖 5-29 所示

Page 70: 第五章、 VB.NET 2008 資料庫程式設計

70/203

開始

Imports NameSpace

建立Connection物件

建立Command物件

建立DataAdapter物件 建立DataReader物件

建立DataSet物件

DataGridView或其他資料顯示物件

圖 5-29 、 VS.NET 2008 連結資料庫步驟

Page 71: 第五章、 VB.NET 2008 資料庫程式設計

71/203

VS.NET 2008 資料庫系統開發 而 Command 物件使用的 SQL 指令主要有

四項,負責資料庫的新增、刪除、修改與查詢等四大功能,也是任何程式可以驅動資料庫工作的命令源,表 5-3 整理說明此四項 SQL 指令的簡單用法

請讀者謹記一個原則,就是「欄位型態」如果是字串或是日期等型態,則需要將對應的「資料」加上單引號,更詳細的 SQL 指令或是變化,請讀者自行參考其他書籍說明

Page 72: 第五章、 VB.NET 2008 資料庫程式設計

72/203

表 5-3 、 SQL 指令說明

編號 功能 指令

1 新增 insert into 資料表名稱 ( 欄位名稱 ) values ( 資料 )

2 刪除 delete from 資料表名稱 where 條件

3 修改 update 資料表名稱 set 欄位名稱 = 新值 where 條件

4 查詢 Select 欄位 from 資料表名稱 where 條件

Page 73: 第五章、 VB.NET 2008 資料庫程式設計

73/203

SQL 指令

Page 74: 第五章、 VB.NET 2008 資料庫程式設計

74/203

SQL 指令 在 5-2 節中,,提到 Command 物件的功能是負責執行 SQL 指令,那什麼是 SQL 指令呢? SQL 指令是結構化查詢語言( Structure Query Language ),用來驅動資料庫進行工作,也就是程式與資料庫間溝通的共同語言

主要作用的對象是資料表內的資料與結構,此處我們只討論資料的部份。關於資料部份的 SQL 指令有四個,分別是新增、刪除、修改與查詢,各自有一定的基本語法公式可以套用,以下列出這四個語法的基本公式,並用表 5-4 的 member 資料表結構作說明:

Page 75: 第五章、 VB.NET 2008 資料庫程式設計

75/203

表 5-4 、 member 資料表結構

表格 : 使用者資料 member  

欄位 Fieldname DataType Key 說明

使用者編號 pkid int PK 自動編號

使用者帳號 loginid varchar 10    

使用者密碼 loginpwd varchar 10    

使用者姓名 name Varchar 8    

年齡 age int    

Page 76: 第五章、 VB.NET 2008 資料庫程式設計

76/203

SQL 指令 新增之 SQL 指令語法: 基本公式: Insert into 資料表名稱 (欄位 1

名稱 ,欄位 2 名稱 ...) values (值 1,值 2...) 套入 member 資料表: Insert into member (l

oginid,loginpwd,name,age) values (‘abc’,’123’,’大雄’ ,12)

上面語法會新增一筆姓名為「大雄」、帳號為「 abc 」、密碼為「 123 」、年齡「 12 」歲的資料進入 member 資料表

Page 77: 第五章、 VB.NET 2008 資料庫程式設計

77/203

SQL 指令 刪除之 SQL 指令語法: 基本公式: Delete from 資料表名稱 where 條件

套入 member 資料表: Delete from member where pkid=1

上面語法會從 member 資料表刪除一筆欄位「 pkid 」等於 1 的資料

Page 78: 第五章、 VB.NET 2008 資料庫程式設計

78/203

SQL 指令 修改之 SQL 指令語法: 基本公式: Update 資料表名稱 set 欄位 1

名稱 = 新值 1, 欄位 2 名稱 = 新值 2…where 條件

套入 member 資料表: Update member set loginid=’aaa’,loginpwd=’222’ where name=’大雄’

上面語法會從 member 資料表修改一筆欄位「 name 」等於「大雄」的帳號與密碼資料,新的帳號是「 aaa 」,密碼是「 222 」

Page 79: 第五章、 VB.NET 2008 資料庫程式設計

79/203

SQL 指令 查詢之 SQL 指令語法: 基本公式: Select 欄位 from 資料表名稱

where 條件 套入 member 資料表: Select * from membe

r 上面語法會從 member 資料表查詢出所有資

Page 80: 第五章、 VB.NET 2008 資料庫程式設計

80/203

SQL 指令 套入 member 資料表: Select * from membe

r where name=’大雄’ 上面語法會從 member 資料表查詢出姓名等

於「大雄」的資料 套入 member 資料表: Select * from membe

r where name like ‘%小%’ 上面語法會從 member 資料表查詢出姓名內

有「小」字的資料

Page 81: 第五章、 VB.NET 2008 資料庫程式設計

81/203

SQL 指令 欄位型態如果是文字、字串或日期,需要在

「值」的部分加上單引號,例如上述的新增與修改指令內,因為 loginid 、 loginpwd 、name 等皆為文字型態,所以其值要用單引號包住

可以用「 * 」代表全部欄位,例如上述的查詢指令: select * from

Page 82: 第五章、 VB.NET 2008 資料庫程式設計

82/203

SQL 指令 條件可以是絕對正確與模糊(需要 %符號)兩種,

例如: Select * from member where name=’大雄’,就是絕對正確,一定要是姓名完全等於「大雄」的才會被查詢出來

另外一個是模糊比對,例如: Select * from member where name like ‘%小%’ ,利用 % 符號代表任何字元或字串,我們只關心姓名中有「小」字的就要被查詢到,不管這個字是在字串的頭、中間或是最後

以 SQL Server 為例,「 -- 」代表的是 SQL 指令的註解符號

Page 83: 第五章、 VB.NET 2008 資料庫程式設計

83/203

不寫程式連結資料庫

Page 84: 第五章、 VB.NET 2008 資料庫程式設計

84/203

不寫程式連結資料庫 本節先讓各位暖暖身,在不用撰寫任何一行

程式碼的狀況下,就能顯示出資 料庫內的資料;但是如果要做更進階的查詢

與異動功能(包含新增、刪除與修 改),使用者就必須要了解本章後面各節所述的方法。

Page 85: 第五章、 VB.NET 2008 資料庫程式設計

85/203

不寫程式連結資料庫 延續使用 CH5-1 的專案,在專案中另外建

立一個新表單(圖 5-30 ),名稱為 TO_ACCESS.vb (圖 5-31 )。我們先用 ACCESS 資料庫做示範,選用的是微軟的北風範例資料庫,資料庫名稱為 Northwind.mdb ,您可以在光碟的 CH5 目錄內找到 CH5-1 專案目錄,裡面有個 DB 的目錄,我們將此資料庫放在其中,並在表單上佈置一個 DataGridView 物件(工具箱>資料> DataGridView ),如圖 5-32 。

Page 86: 第五章、 VB.NET 2008 資料庫程式設計

86/203圖 5-30 、 VS.NET 2008 加入新表單畫面 I

Page 87: 第五章、 VB.NET 2008 資料庫程式設計

87/203圖 5-31 、 VS.NET 2008 加入新表單畫面 II

Page 88: 第五章、 VB.NET 2008 資料庫程式設計

88/203圖 5-32 、加入 DataGridView物件畫面

Page 89: 第五章、 VB.NET 2008 資料庫程式設計

89/203

不寫程式連結資料庫 使用滑鼠左鍵開啟 DataGridView 物件右上

方的一個小三角形圖示,就可以看到如圖5-33 所示的設定畫面。本節使用 ACCESS 資料庫為例, SQLServer 與 MySQL 等資料庫部份設定方法相同,就請讀者自行練習

Page 90: 第五章、 VB.NET 2008 資料庫程式設計

90/203圖 5-33 、設定 DataGridView連結資料庫畫面

Page 91: 第五章、 VB.NET 2008 資料庫程式設計

91/203

不寫程式連結資料庫 出現如圖 5-33 的設定畫面後,依序點選「選擇資

料來源>加入專案資料來源」,就可以看到圖 5-34 的選擇畫面。還記得我們在 5-2 節中說明了 VS.NET 2008 存取資料庫的架構與使用的物件嗎?此節的重點是不要讓讀者寫到任何一行程式碼,但是仍要讓讀者看到基本架構的存在。如圖 5-34~圖 5-36 就是我們在前面各節中所述的 Connection 物件設定畫面,首先看到的是圖 5-39 ,此處請選擇「資料庫」。

Page 92: 第五章、 VB.NET 2008 資料庫程式設計

92/203圖 5-34 、透過 DataGridView設定 Connection 物件畫面 I

Page 93: 第五章、 VB.NET 2008 資料庫程式設計

93/203圖 5-35 、透過 DataGridView設定 Connection 物件畫面 II

Page 94: 第五章、 VB.NET 2008 資料庫程式設計

94/203圖 5-36 、透過 DataGridView設定 Connection 物件畫面 III

Page 95: 第五章、 VB.NET 2008 資料庫程式設計

95/203圖 5-37 、透過 DataGridView設定 Connection 物件畫面 IV

Page 96: 第五章、 VB.NET 2008 資料庫程式設計

96/203圖 5-38 、 Connection 物件測試連接畫面

Page 97: 第五章、 VB.NET 2008 資料庫程式設計

97/203圖 5-39 、 Connection 物件設定完成畫面

Page 98: 第五章、 VB.NET 2008 資料庫程式設計

98/203

不寫程式連結資料庫 選擇「下一步」後可以看到圖 5-40 的詢問

視窗畫面,詢問是否要將 Northwind,mdb 資料庫複製包入專案中,此處請選擇「否」,以免日後程式執行與轉移上發生問題。

Page 99: 第五章、 VB.NET 2008 資料庫程式設計

99/203圖 5-40 、 Connection 物件設定完成後詢問畫面

Page 100: 第五章、 VB.NET 2008 資料庫程式設計

100/203

不寫程式連結資料庫 看到如圖 5-41 的儲存連接字串畫面,請勾選「是,

將連接儲存為」,然後進入「下一步」,就可以見到圖 5-42 的畫面, 請選擇要顯示在 DataGridView 物件上的資料表與欄位,此步驟則是對應到 Command 物件中的 SQL 指令,我們在圖 5-42 中選擇「供應商」資料表中的所有欄位。

Page 101: 第五章、 VB.NET 2008 資料庫程式設計

101/203

不寫程式連結資料庫 最後請選擇「完成」回到圖 5-43 的畫面,原來圖

5-33 中沒有欄位名稱的 DataGridView 物件出現了在圖 5-42 中選擇的資料表內欄位名稱,表示設定成功;同時您應該也發現平台下方出現了三個自動產生的物件。此時請讀者將啟動表單切換成 TO_ACCESS.vb 後就可以執行本表單,將可以看到結果如圖 5-44 之畫面,在沒有撰寫任何程式碼的狀況下顯示出所要的資料。

Page 102: 第五章、 VB.NET 2008 資料庫程式設計

102/203圖 5-41 、儲存連接字串畫面

Page 103: 第五章、 VB.NET 2008 資料庫程式設計

103/203圖 5-42 、選擇要顯示資料表與欄位畫面

Page 104: 第五章、 VB.NET 2008 資料庫程式設計

104/203圖 5-43 、完成 DataGridView物件設定之畫面

Page 105: 第五章、 VB.NET 2008 資料庫程式設計

105/203

圖 5-44 、 TO_ACCESS 表單執行畫面

Page 106: 第五章、 VB.NET 2008 資料庫程式設計

106/203

不寫程式連結資料庫 這裡也可以搭配「工具箱>資料> BindingNavigat

or 」物件運作, BindingNavigator 物件可以提供自動統計選用資料表內資料總筆數、目前資料位置、移動資料位置、新增與刪除資料等功能,如圖 5-45 所示

在 TO_ACCESS 表單加入 BindingNavigator 物件後,接著透過屬性視窗設定 BindingNavigator 物件的 BindingSource 屬性(圖 5-46 ),就可以讓 BindingNavigator 物件產生作用,執行結果如圖 5-47 所示。

Page 107: 第五章、 VB.NET 2008 資料庫程式設計

107/203圖 5-45 、 TO_ACCESS 表單中加入 BindingNavigator 物件畫面

Page 108: 第五章、 VB.NET 2008 資料庫程式設計

108/203圖 5-46 、設定 BindingNavigator 物件 BindingSource 屬性畫面

Page 109: 第五章、 VB.NET 2008 資料庫程式設計

109/203

圖 5-47 、加入 BindingNavigator 物件後 TO_ACCESS 表單執行畫面

Page 110: 第五章、 VB.NET 2008 資料庫程式設計

110/203

DataReader 物件讀取資料

Page 111: 第五章、 VB.NET 2008 資料庫程式設計

111/203

DataReader 物件讀取資料 本節說明如何寫程式使用 Connection 、 Co

mmand 與 DataReader 物件連結 ACCESS 資料庫讀取資料的方法。

在 CH5-1 專案中再建立一個名稱為 ACCESS_DR_READ.vb 新的表單,如圖 5-48 所示。

Page 112: 第五章、 VB.NET 2008 資料庫程式設計

112/203圖 5-48 、表單 ACCESS_DR_READ 畫面

Page 113: 第五章、 VB.NET 2008 資料庫程式設計

113/203

DataReader 物件讀取資料 開始在 ACCESS_DR_READ 表單上佈置所

需要的物件,也就是設計使用者介面,如表5-5 所示,我們需要從工具箱中取用一個 ListBox 物件與一個 Button 物件(可以在通用控制項那個區塊中找到這些物件),完成後的畫面如圖 5-49 所示。

Page 114: 第五章、 VB.NET 2008 資料庫程式設計

114/203

表 5-5 、 ACCESS_DR_READ 表單上物件設定說明

編號物件 物件名稱 (Name) 屬性設定

1 ListBox ListBox1 Font= 新細明體 , 14.25pt

2 Button Button1 Text= 連結 Northwind.mdb顯示資料Font= 新細明體 , 12pt

Page 115: 第五章、 VB.NET 2008 資料庫程式設計

115/203圖 5-49 、 ACCESS_DR_READ 表單畫面

Page 116: 第五章、 VB.NET 2008 資料庫程式設計

116/203

DataReader 物件讀取資料 完成 ACCESS_DR_READ 表單上所需物件佈置與屬性設定後,可以開始依據圖 5-26 架構所示撰寫程式碼,首先需要引用正確的名稱空間,由於資料庫是 MS ACCESS ( Northwind.mdb ) , 所以使用的是 System.Data.OleDb 名稱空間(表 5-2 ),程式碼為

Imports System.Data.OleDb 撰寫位置與完成後畫面如圖 5-50 所示。

Page 117: 第五章、 VB.NET 2008 資料庫程式設計

117/203圖 5-50 、引用 System.Data.OleDb 名稱空間畫面

Page 118: 第五章、 VB.NET 2008 資料庫程式設計

118/203

DataReader 物件讀取資料 以 Connection 物件為例,主要功能是建立

與資料庫系統的連線,所以需要給定資料庫系統所在位置( IP 或是檔案目錄)、帳號、密碼與資料庫名稱等參數,我們將這些參數稱為「連接字串」,不同的資料庫有不同的聯接字串寫法,您可以參考 http://www.connectionstrings.com 這個網站,如圖 5-51 所示,裡面收錄了目前市面上可以見到的各式資料庫

Page 119: 第五章、 VB.NET 2008 資料庫程式設計

119/203圖 5-51 、 connectionstrings網站畫面

Page 120: 第五章、 VB.NET 2008 資料庫程式設計

120/203

DataReader 物件讀取資料 實際建立 ACCESS 需要的 Connection 物件的程式碼為:

Dim dbconn As OleDbConnection

dbconn = New OleDbConnection(連接字串 ) 不管要連結哪一種資料庫,第一個動作都是要建

立 Connection 物件,不要忘了本物件主要的功能就是建立與資料庫系統的連線,需要給定「連接字串」。此處我們需要的是 ACCESS 資料庫,所以請點選圖 5-52 上的 ACCESS ,後續就請讀者自行選擇您所需要的資料庫來獲得正確的連線字串。

Page 121: 第五章、 VB.NET 2008 資料庫程式設計

121/203圖 5-52 、 www.connectionstrings.com網站上選擇 ACCESS 資料庫畫面

Page 122: 第五章、 VB.NET 2008 資料庫程式設計

122/203

DataReader 物件讀取資料 點選 ACCESS 資料庫的超連結後,可以看

到如圖 5-53 有關 ACCESS 資料庫連線字串的整理畫面,我們使用的是 .NET 平台的 OleDbConnection 類別,資料庫也沒有設定密碼,所以使用 Standard Security 這段的連線字串即可。

Page 123: 第五章、 VB.NET 2008 資料庫程式設計

123/203圖 5-53 、 ACCESS 資料庫的連線字串整理畫面

Page 124: 第五章、 VB.NET 2008 資料庫程式設計

124/203

DataReader 物件讀取資料 如圖 5-54 所示,所宣告的物件名稱為 dbcon

n ,資料庫名稱為 Northwind.mdb ,最後使用 dbconn 物件的 Open 方法開啟資料庫,程式碼如下所示,建立後如圖 5-55 所示,最後記得使用 dbconn 物件的 Close 方法關閉 ACCESS 資料庫,這對於檔案型資料庫尤其重要。

Page 125: 第五章、 VB.NET 2008 資料庫程式設計

125/203圖 5-54 、建立 Connection 物件程式碼畫面

Page 126: 第五章、 VB.NET 2008 資料庫程式設計

126/203圖 5-55 、 Connection 物件建立完成後畫面

Page 127: 第五章、 VB.NET 2008 資料庫程式設計

127/203

DataReader 物件讀取資料 而 Command 物件所需要的參數有兩個,一

個是 SQL 指令(第一個參數),另一個是承接 Connection 物件,這裡是 dbconn 物件(第二個參數),程式碼如下所示,畫面如圖 5-56 所示。

Page 128: 第五章、 VB.NET 2008 資料庫程式設計

128/203圖 5-56 、 Command 物件建立完成後畫面

Page 129: 第五章、 VB.NET 2008 資料庫程式設計

129/203

DataReader 物件讀取資料 透過 dbcmd 物件的 ExecuteReader 方法將產生一個「唯讀」的資料表物件,如果要可以進行資料異動(包含新增、刪除與修改,請參見 5-5 節說明),完成後畫面如圖 5-57 所示。

Page 130: 第五章、 VB.NET 2008 資料庫程式設計

130/203圖 5-57 、 DataReader 物件建立完成後畫面

Page 131: 第五章、 VB.NET 2008 資料庫程式設計

131/203

DataReader 物件讀取資料 最後請先將本專案的啟動表單切換成 ACCE

SS_DR_READ ,再執行本專案,結果將如圖 5-59 所示,顯示出「 Northwind.mdb 」資料庫中「客戶」資料表內「公司名稱」欄位的所有資料。

Page 132: 第五章、 VB.NET 2008 資料庫程式設計

132/203圖 5-58 、 Connection 、 Command 與 DataReader 物件建立完成後畫面

Page 133: 第五章、 VB.NET 2008 資料庫程式設計

133/203

圖 5-59 、 ACCESS_DR_READ 表單執行畫面

Page 134: 第五章、 VB.NET 2008 資料庫程式設計

134/203

DataReader 物件異動資料

Page 135: 第五章、 VB.NET 2008 資料庫程式設計

135/203

DataReader 物件異動資料 5-4 節使用 DataReader 物件與 Command 物件的

ExecuteReader 方法進行 ACCESS 資料庫的「唯讀」存取,屬於圖 5-27 中 on-line 作業模式的其中一種。由於是「唯讀」,所以無法進行新增、刪除與修改等資料異動作業,但是只要架構不變,改用不同的方法,就可以達成異動的目的。本節一樣使用 DataReader 物件,而 Command 物件則是改用「 ExecuteNonQuery 」方法來達成資料異動的目的。

Page 136: 第五章、 VB.NET 2008 資料庫程式設計

136/203

DataReader 物件異動資料 請在 CH5-1 專案中再建立一個新表單,名

稱為 ACCESS_DR_UPDATE.vb ,如圖 5-60 所示

其次,在 ACCESS_DR_UPDATE 表單上佈置所需要的物件,物件說明如表 5-6 所示,總共包含 11 個物件,完成後如圖 5-61 所示

Page 137: 第五章、 VB.NET 2008 資料庫程式設計

137/203圖 5-60 、 CH5-1 專案中建立 ACCESS_DR_UPDATE 表單畫面

Page 138: 第五章、 VB.NET 2008 資料庫程式設計

138/203

表 5-6 、 ACCESS_DR_UPDATE 表單上物件設定說明

編號 物件 屬性設定

1 ListBox Name= ListBox1

2 Button Name=Button1Text= 刪除選取資料

3 Button Name=Button2Text= 新增資料

4 Button Name=Button3Text= 修改資料

5 Panel Name= Panel1BorderStyle=FixedSingle

6 TextBox Name= TextBox1

7 TextBox Name= TextBox2

8 TextBox Name= TextBox3

9 Label Name= Label1Font= 新細明體 , 12ptText=客戶編號

10 Label Name= Label2Font= 新細明體 , 12ptText=公司名稱

11 Label Name= Label3Font= 新細明體 , 12ptText=聯絡人

Page 139: 第五章、 VB.NET 2008 資料庫程式設計

139/203圖 5-61 、 ACCESS_DR_UPDATE 表單介面畫面

Page 140: 第五章、 VB.NET 2008 資料庫程式設計

140/203

DataReader 物件異動資料 新增、刪除與修改三項功能中刪除與修改都

需要有「特定對象」,所以需要由使用者點選決定要刪除與修改的資料對象,再將其撰寫在 SQL 指令中的 where 條件中;新增則不需要。先針對「刪除」功能進行說明

Page 141: 第五章、 VB.NET 2008 資料庫程式設計

141/203

DataReader 物件異動資料 此處是透過 ListBox 讓使用者點選需要處理

的對象,會使用到 ListBox 物件的 SelectedItem 屬性,而前述程式碼一次顯示出客戶編號、公司名稱與連絡人欄位的資料,其中客戶編號為資料表的主鍵值,所以取出 SelectedItem 屬性後再用 Split 方法將主鍵值取出到 item 陣列的 item(0) 項目,做為後續 SQL 指令內的 where 條件

Page 142: 第五章、 VB.NET 2008 資料庫程式設計

142/203

DataReader 物件異動資料 本節最後說明修改資料功能,與新增與刪除功能相同,都是使用 DataReader 物件搭配修改的 SQL 指令(表 5-3 ),但是需要有修改對象,所以 SQL 指令如下所示:

sql = String.Format("update 客戶 set 客戶編號='{0}', 公司名稱 ='{1}',連絡人 ='{2}' where 客

戶編號 ='{3}'", Textbox1.Text, Textbox2.Text, Textbox3, item(0))

Page 143: 第五章、 VB.NET 2008 資料庫程式設計

143/203

DataReader 物件異動資料 其中的 Textbox1.Text 、 Textbox2.Text 與 Textbox

3.Text 則是對應到表 5-5 中的三個 TextBox 物件,item(0) 則是使用者在 ListBox 中所選擇要修改的資料。

Page 144: 第五章、 VB.NET 2008 資料庫程式設計

144/203

圖 5-62 、 ACCESS_DR_UPDATE 表單 Load 事件執行畫面

Page 145: 第五章、 VB.NET 2008 資料庫程式設計

145/203圖 5-63 、 ACCESS_DR_UPDATE 表單刪除功能執行畫面

Page 146: 第五章、 VB.NET 2008 資料庫程式設計

146/203

圖 5-64 、 ACCESS_DR_UPDATE 表單新增功能執行畫面

Page 147: 第五章、 VB.NET 2008 資料庫程式設計

147/203

圖 5-65 、 ACCESS_DR_UPDATE 表單修改功能執行前畫面

Page 148: 第五章、 VB.NET 2008 資料庫程式設計

148/203

圖 5-66 、 ACCESS_DR_UPDATE 表單修改功能執行後畫面

Page 149: 第五章、 VB.NET 2008 資料庫程式設計

149/203

DataSet

Page 150: 第五章、 VB.NET 2008 資料庫程式設計

150/203

DataReader 物件異動資料 5-4 與 5-5 節中針對圖 5-27 中的 on-line 結構方

式存取 ACCESS 資料庫,本節將針對 off-line 結構存取 ACCESS 資料庫來說明。依照前述方法,請讀者在 CH5-1 專案中建立第五個表單 ACCESS_DATASET 。

Page 151: 第五章、 VB.NET 2008 資料庫程式設計

151/203

DataReader 物件異動資料 不同於 5-4 與 5-5 節,本節使用 DataGridView 物

件(工具箱>資料> DataGridView )替換 ListBox 物件來顯示資料, 同時將 DataGridView 物件設定成可以被新增( AllowUserToAddRows=True )、修改與刪除( AllowUserToDeleteRows=True )資料,並加入可以移動資料的 BindingNavigator 物件,所以 ACCESS_DATASET 表單上需要佈置的物件如表 5-7 所示,完成後如圖 5-67 所示。

Page 152: 第五章、 VB.NET 2008 資料庫程式設計

152/203

表 5-7 、 ACCESS_DATASET 表單上物件設定說明

編號

物件屬性設定

1 DataGridView Name= DataGridView1AllowUserToAddRows=TrueAllowUserToDeleteRows=TrueReadOnly=False

2 Button Name= Button1Text=第一筆

3 Button Name= Button2Text= 下一筆

4 Button Name= Button3Text=上一筆

5 Button Name= Button4Text= 最末筆

6 Button Name= Button5Text= 更新資料庫

7 BindingNavigator

Name= BindingNavigator1

8 BindingSource

Name= BindingSource1

9 Label Name=Label1Text=聯絡人職稱

10 Label Name=Label2Text=地址

11 Label Name=Label3Text=城市

12 Label Name=Label4Text= 行政區

13 Label Name=Label5Text=郵遞區號

14 Label Name=Label6Text=

15 Label Name=Label7Text=

16 Label Name=Label8Text=

17 Label Name=Label9Text=

18 Label Name=Label10Text=

19 Panel Name=Panel1

Page 153: 第五章、 VB.NET 2008 資料庫程式設計

153/203圖 5-67 、 ACCESS_DATASET 表單介面畫面

Page 154: 第五章、 VB.NET 2008 資料庫程式設計

154/203

圖 5-68 、 ACCESS_DATASET 表單執行畫面 I

Page 155: 第五章、 VB.NET 2008 資料庫程式設計

155/203圖 5-69 、 ACCESS_DATASET 表單執行畫面 II

Page 156: 第五章、 VB.NET 2008 資料庫程式設計

156/203圖 5-70 、 ACCESS_DATASET 表單執行畫面 III

Page 157: 第五章、 VB.NET 2008 資料庫程式設計

157/203

MS SQL Server 資料庫之連結

Page 158: 第五章、 VB.NET 2008 資料庫程式設計

158/203

MS SQL Server 資料庫之連結 5-4 ~ 5-6 節中以 MS ACCESS 資料庫示範了圖 5-

26 中 VS.NET 2008 存取資料庫的兩個主要結構( on-line 與 off-line ) 與三個方法( DataReader.ExecuteReadedr 、 DataReader.ExecuteNonQuery 、DataAdapter+DataSet ),本節則是將資料庫換成支援 client-server 架構的 MS SQL Server ,兩者主要不同是在引用的名稱空間、建立物件使用的類別與連線字串(如圖 5-71 , http://www.connectionstrings.com 網站內容之資料)。

Page 159: 第五章、 VB.NET 2008 資料庫程式設計

159/203圖 5-71 、 SQL Server 連線字串畫面

Page 160: 第五章、 VB.NET 2008 資料庫程式設計

160/203

MS SQL Server 資料庫之連結 詳細的程式碼就請讀者自行參考 5-4 ~ 5-6 節方法進行,本節針對不同之處列表進行說明,詳細如表 5-8 之說明。

Page 161: 第五章、 VB.NET 2008 資料庫程式設計

161/203

表 5-8 、 ACCESS vs. SQL Server 資料庫使用方式異同說明

項目 ACCESS SQL Server

名稱空間 System.Data.OleDB System.Data.Sqlclient

Connection物件 OleDbConnection SqlConnection

連線字串 Provider=Microsoft.Jet.OLEDB.4.0;Data Source= 資料庫所在 ;User Id=admin;Password=;

Data Source=server 位置 ;Initial Catalog= 資料庫名稱 ;User Id=帳號 ;Password=密碼 ;

Command物件 OleDbCommand SqlCommand

DataReader物件 OleDbDataReader SqlDataReader

DataAdapter 物件 OleDbDataAdapter SqlDataAdapter

Commandbuilder 物件 OleDbCommandBuilder SqlCommandBuilder

Page 162: 第五章、 VB.NET 2008 資料庫程式設計

162/203

MySQL 資料庫之連結

Page 163: 第五章、 VB.NET 2008 資料庫程式設計

163/203

MySQL 資料庫之連結 本節則說明如何連結 MySQL 資料庫, My

SQL 跟 SQL Server 一樣都支援 client-server 架構,使用的是 ODBC 類別名稱空間,實作方法與 5-4 ~ 5-6 節完全相同

到 http://www.connectionstrings.com 網站查詢MySQL 的連線字串,如圖 5-72 所示

Page 164: 第五章、 VB.NET 2008 資料庫程式設計

164/203圖 5-72 、 MySQL 資料庫連線字串畫面

Page 165: 第五章、 VB.NET 2008 資料庫程式設計

165/203

程式封裝與部署

Page 166: 第五章、 VB.NET 2008 資料庫程式設計

166/203

程式封裝與部署 程式開發完成後,最重要的事情就是要交付

到使用者手上讓使用者使用,這個需要透過「封裝與部署專案」。 VS.NET 2008 支援封裝成光碟與可透過網路安裝與更新( Click-once )這兩種方式,本節就以本章的 CH5-1 專案為例來對其進行封裝成可用光碟散佈的安裝套件。

Page 167: 第五章、 VB.NET 2008 資料庫程式設計

167/203

程式封裝與部署 如圖 5-73 所示,請讀者在 CH5-1 專案內選

擇「檔案>加入>新增專案」,在圖 5-74 的畫面中請選擇其他專案類型中的「安裝和部署」類型中的「安裝精靈」,並給定專案名稱為 CH5_Setup ,建立與儲存位置在原 CH5-1 專案的儲存目錄中,按「確定」後開始精靈的設定步驟,如圖 5-75 所示,總共需要 5 個步驟就可以完成

Page 168: 第五章、 VB.NET 2008 資料庫程式設計

168/203圖 5-73 、在 CH5-1 專案中加入安裝和部署專案畫面

Page 169: 第五章、 VB.NET 2008 資料庫程式設計

169/203圖 5-74 、選擇加入安裝和部署精靈專案畫面

Page 170: 第五章、 VB.NET 2008 資料庫程式設計

170/203

圖 5-75 、安裝和部署精靈設定畫面 I

Page 171: 第五章、 VB.NET 2008 資料庫程式設計

171/203

程式封裝與部署 如圖 5-76 所示為安裝精靈專案的第二個步驟,選擇要建立的安裝程式的類型,此處為「建立 Windows 應用程式的安裝程式」,接著選擇「下一步」進入步驟三

步驟三則是要選擇要封裝打包的檔案,包含EXE 檔案、資料庫檔案或是其他資源檔等,此處選擇「內容檔」與「主要輸出」兩類(圖 5-77 ),「主要輸出」指的是 EXE 檔案,「內容檔」主要是針對需要的中介檔案等等

Page 172: 第五章、 VB.NET 2008 資料庫程式設計

172/203

圖 5-76 、安裝和部署精靈設定畫面 II

Page 173: 第五章、 VB.NET 2008 資料庫程式設計

173/203

圖 5-77 、安裝和部署精靈設定畫面 III

Page 174: 第五章、 VB.NET 2008 資料庫程式設計

174/203

程式封裝與部署 進入步驟四後就可以實際選擇所需要的檔案,

在 5-1 節中曾經提到專案中 bin 目錄底下的 Debug 與 Release 目錄的用途,步驟四就需要用到這兩個目錄,如果讀者您的 EXE 檔是建置在 Debug 目錄下,請使用圖 5-78 的「加入」功能到 Debug 目錄下選擇 CH5-1.exe 執行檔,如圖 5-79 所示,結果如圖 5-80 所示

Page 175: 第五章、 VB.NET 2008 資料庫程式設計

175/203

圖 5-78 、安裝和部署精靈設定畫面 IV

Page 176: 第五章、 VB.NET 2008 資料庫程式設計

176/203

圖 5-79 、選擇 EXE檔與資料庫檔案畫面

Page 177: 第五章、 VB.NET 2008 資料庫程式設計

177/203

圖 5-80 、完成選擇 EXE檔與資料庫檔案畫面

Page 178: 第五章、 VB.NET 2008 資料庫程式設計

178/203

程式封裝與部署 最後一個步驟則是上述設定的小總結,提醒

設定人員做最後確認動作,如圖 5-81 所示。其次就進入圖 5-82 的畫面,此部分主要是設定應用程式安裝到使用者電腦後的狀態,例如安裝的路徑、是否要在桌面出現捷徑與是否要在開始選單出現選項等等,分別對應到圖 5-82 的「應用程式資料夾」、「使用者的桌面」與「使用者的程式功能表」三個選項。

Page 179: 第五章、 VB.NET 2008 資料庫程式設計

179/203

圖 5-81 、安裝和部署安裝精靈設定步驟五畫面

Page 180: 第五章、 VB.NET 2008 資料庫程式設計

180/203圖 5-82 、設定應用程式安裝到使用者電腦結果畫面

Page 181: 第五章、 VB.NET 2008 資料庫程式設計

181/203

程式封裝與部署 圖 5-80 中選擇的 EXE 檔案與資料庫將出現在圖

5-83 的應用程式資料夾中,包含有 CH5-1.exe 執行檔與 Northwind.mdb 資料庫。如果要在桌面與開始選單設定捷徑,方式如圖 5-84 所示,請在 CH5-1.exe 上點選滑鼠右鍵,功能表上可以看到「建立 CH5-1.exe 的捷徑」此選項,點選後會在應用程式資料夾建立一個捷徑,請將其更名為 CH5-1.exe 後,點選拖入「使用者的桌面」中,如圖5-85 所示

Page 182: 第五章、 VB.NET 2008 資料庫程式設計

182/203圖 5-83 、應用程式資料夾畫面

Page 183: 第五章、 VB.NET 2008 資料庫程式設計

183/203圖 5-84 、設定使用者桌面捷徑畫面

Page 184: 第五章、 VB.NET 2008 資料庫程式設計

184/203圖 5-85 、將 CH5-1.exe捷徑拖入使用者的桌面畫面

Page 185: 第五章、 VB.NET 2008 資料庫程式設計

185/203

程式封裝與部署 使用同樣的捷徑建立方式也可以在使用者的

開始選單中建立捷徑,差別在於此出先建立一個資料夾,名稱為 CH5 ,如圖 5-86 與 5-87 所示,再將捷徑拖入「使用者的程式功能表」中,結果如圖 5-87

Page 186: 第五章、 VB.NET 2008 資料庫程式設計

186/203圖 5-86 、設定使用者功能表畫面 I

Page 187: 第五章、 VB.NET 2008 資料庫程式設計

187/203圖 5-87 、設定使用者功能表畫面 II

Page 188: 第五章、 VB.NET 2008 資料庫程式設計

188/203

程式封裝與部署 至此,所有的安裝和部署精靈專案的設定畫

面都已經完成,接著就是要透過「建置」產生 SETUP.EXE 檔案, VS.NET 2008 預設是不對安裝和部署精靈專案進行建置動作的,所以請先選擇「建置>組態管理員」選項,如圖 5-88 所示,請勾選 CH5_Setup 專案中的建置檢核鈕( checkbox )

Page 189: 第五章、 VB.NET 2008 資料庫程式設計

189/203圖 5-88 、設定組態管理員畫面

Page 190: 第五章、 VB.NET 2008 資料庫程式設計

190/203

程式封裝與部署 最後請選擇「建置>建置方案」來開始進行

專案的封裝與建置,如圖 5-89 所示,建置需要一段時間,待畫面左下角出現「建置成功」才算完成

Page 191: 第五章、 VB.NET 2008 資料庫程式設計

191/203圖 5-89 、安裝與部署專案建置畫面

Page 192: 第五章、 VB.NET 2008 資料庫程式設計

192/203

程式封裝與部署 完成建置後可以在 CH5-1\CH5_Setup\Debug

目錄中見到如圖 5-90 的封裝完成檔案,共有兩個檔案,分別是 setup.exe 與 CH5_Setup.msi ,將此兩個檔案燒成光碟就可以給使用者進行安裝動作。安裝程式將自動檢查使用者電腦是否有需要的 .NET Freamwork ,如果沒有將自動下載安裝,請讀者自行測試,本章將不再贅述

Page 193: 第五章、 VB.NET 2008 資料庫程式設計

193/203圖 5-90 、安裝與部署建置完成畫面

Page 194: 第五章、 VB.NET 2008 資料庫程式設計

194/203

POS 銷售系統

Page 195: 第五章、 VB.NET 2008 資料庫程式設計

195/203

POS 銷售系統 我們在本節作一個小總合,利用上面各節介紹的技術製作一個小銷售系統,當中包含會員基本資料管理、銷售、銷售查詢與登入登出功能。請讀者在練習 6 中繼續完成產品管理與進貨功能設計。

Page 196: 第五章、 VB.NET 2008 資料庫程式設計

196/203

表格 : 使用者資料 member  

欄位 Fieldname DataType Key 說明

使用者編號 pkid int PK 自動編號

使用者帳號 loginid varchar 10    

使用者密碼 loginpwd varchar 10    

使用者姓名 name Varchar 8    

年齡 age int    

表格 : 產品資料 product  

欄位 Fieldname DataType Key 說明

產品編號 p_id int PK 自動編號

產品名稱 p_name varchar 255    

售價 pricre int    

Page 197: 第五章、 VB.NET 2008 資料庫程式設計

197/203

表格 : 銷售主表 sales  

欄位 Fieldname DataType Key 說明

銷售編號 s_id int PK 自動編號

產品名稱 pkid int FK 連結 member 資料表

銷售日期 s_day datetime    

表格 : 銷售明細表 sales_list  

欄位 Fieldname DataType Key 說明

銷售細表編號 sl_id int PK 自動編號

銷售編號 s_id int FK 連結 sales 資料表

產品編號 p_id int FK 連結 product 資料表

銷售數量 num int    

Page 198: 第五章、 VB.NET 2008 資料庫程式設計

198/203

POS 銷售系統 總共有四個資料表,分別是客戶資料表( m

ember )、產品資料表( product )、銷售主資料表( sales )、銷售明細資料表( sales_list ),請讀者參考上面的欄位說明,自行在 SQL Server 資料庫上建立資料庫。四張資料表的關係如圖 5-91 所示

Page 199: 第五章、 VB.NET 2008 資料庫程式設計

199/203

圖 5-91 、資料表關聯圖

Page 200: 第五章、 VB.NET 2008 資料庫程式設計

200/203

POS 銷售系統 現在可以開始來建立專案,名稱為 POS ,

將 Form1 表單建立成登入視窗,如圖 5-92 。 其次使用 MDI 表單建立主系統畫面,並在

其上佈置一個下拉選單物件( MenuStrip ),如圖 5-93 所示。其它表單畫面請讀者自行參考光碟 CH5 目錄內的 POS 專案。

Page 201: 第五章、 VB.NET 2008 資料庫程式設計

201/203

圖 5-92 、登入畫面

Page 202: 第五章、 VB.NET 2008 資料庫程式設計

202/203圖 5-93 、主畫面

Page 203: 第五章、 VB.NET 2008 資料庫程式設計

203/203

POS 銷售系統 在登入部分我們處理了 SQL Injection 問題,

可以進行簡單的銷售作業與記錄查詢作業;而基本資料維護部分只完成了會員資料,請讀者參考會員資料的程式碼,自行撰寫產品資料的維護功能。另外,本系統也只做了銷售部份,若是要有基本進銷存功能,尚缺進貨作業,這部分我們也留給讀者自行練習設計與開發。