1 / 75

資料庫理論與實務

資料庫理論與實務. 以 VB6 建立資料庫. 以 VB6 建立資料表. 按滑鼠右鍵將出現快顯功能表. 輸入資料記錄. 滑鼠左鍵連點兩下. 簡易資料庫程式設計. 資料 (Data) 元件. 第一筆 資料. 最後一筆資料. 資料控制項. 上一筆 資料. 下一筆 資料. 資料控制項的常用屬性. Name :資料控制項的名稱 Caption :資料控制項內的標題 BatabaseName :設定連結的資料庫名稱 RecordSource :設定連結的資料表名稱 ReadOnly :設定是否允許修改

Download Presentation

資料庫理論與實務

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 資料庫理論與實務

  2. 以VB6建立資料庫

  3. 以VB6建立資料表 按滑鼠右鍵將出現快顯功能表

  4. 輸入資料記錄 滑鼠左鍵連點兩下

  5. 簡易資料庫程式設計 • 資料(Data)元件 第一筆 資料 最後一筆資料 資料控制項 上一筆 資料 下一筆 資料

  6. 資料控制項的常用屬性 • Name:資料控制項的名稱 • Caption:資料控制項內的標題 • BatabaseName:設定連結的資料庫名稱 • RecordSource:設定連結的資料表名稱 • ReadOnly:設定是否允許修改 • Connect:設定資料庫的檔案格式,內定為       Access • Exclusive:封閉,設定是否可與妻他程式共用      此資料庫

  7. 資料感知物件(Data Aware) • 具有資料連結功能的控制項統稱為Data Aware • 文字方塊(TextBox) • 標籤(Label) • 核取方塊(CheckBox) • 圖片方塊(PictureBox) • 影像(Image) • 清單方塊(ListBox) • 下拉式清單方塊(ComboBox) • 格子(MSFlexGrid) • … 共同重要屬性 1. DataSource  決定連結的資料控制項名稱 2. DataField  決定鏈結的資料連位名稱

  8. 牛刀小試(1) Label*6 TextBox*6 Data*1

  9. 牛刀小試(1)---續 • 重要屬性設定 • Data • DatabaseName • C:\VB6投影片\第九章範例\牛刀小試(1)\db-test.mdb • RecordSource • student

  10. 牛刀小試(1)---續 • 重要屬性設定(續) • Text1(0)~Text1(5) • DataSource • Data1 • Text1(0)~Text1(5) • DataField • Text1(0)  stu_no • Text1(1)  name • Text1(2)  blood • Text1(3)  sex • Text1(4)  tel • Text1(5)  address

  11. 以程式控制移動資料 • 移到第一筆記錄 • Data1.Recordset.MoveFirst • 移到最後一筆記錄 • Data1.Recordset.MoveLast • 移到上一筆記錄 • Data1.Recordset.MovePrevious • 移到下一筆記錄 • Data1.Recordset.MoveNext

  12. 牛刀小試(2) • 同牛刀小試(1)僅新增四個CommandButton CommandButton*4

  13. 牛刀小試(2)---續 BOF (Begin Of File) 檔案開頭 EOF (End Of File) 檔案結尾 若不加上BOF或EOF的 判斷,將發生下圖情形

  14. 新增、刪除、修改資料記錄 • 新增資料記錄 • Data1.Recordset.AddNew • 刪除資料記錄 • Data1.Recordset.Delete • 修改資料記錄(需配合AddNew或Edit) • Data1.Recordset.Update • 編輯資料記錄 • Data1.Recordset.Edit

  15. 牛刀小試(3) • 同牛刀小試(2)再新增三個CommandButton

  16. 牛刀小試(3)---續

  17. 查詢資料記錄 • 找出符合資料的第一筆記錄 • Data1.Recordset.FindFirst “blood=‘B’” • 找出符合條件的前一筆記錄 • Data1.Recordset.FindPrevious “blood=‘B’” • 找出符合條件的下一筆記錄 • Data1.Recordset.FindNext “blood=‘B’” • 找出符合條件的最後一筆記錄 • Data1.Recordset.FindLast “blood=‘B’” • 是否找到符合的記錄? • Data1.Recordset.NoMatch • True:找到符合記錄 • False:未找到符合記錄

  18. 其他 • 查詢資料總筆數 • Data1.Recordset.RecordCount • 查詢資料總欄位數 • Data1.Recordset.Fields.Count • 關閉資料表 • Data1.Recordset.Close

  19. 牛刀小試(4) • 同牛刀小試(3)再新增三個CommandButton

  20. 牛刀小試(4)---續

  21. 不用Data元件的方法 DAO(Data Access Object) • 資料存取物件 • VB6中的一種資料存取方法,也是一種物件結構(階層物件集合)的方式 • 最大的階層為DBEngine (Microsoft Jet Database Engine) • 有了DBEngine後VB就會自動配置一塊記憶體空間即Workspace(0)工作空間給使用者 • 然後使用OpenDatabase開啟資料庫 • 待資料庫開啟後接著以OpenRecordset開啟資料表 • 使用DAO必須先完成下列二項宣告 • 資料庫(Database) • 資料表(Recordset)

  22. DAO(續) • DAO設計的第一步引用DAO物件庫

  23. DAO(續) • DAO設計的第二步宣告資料庫及資料表 • DAO設計的第三步開啟資料庫及資料表 Dim db As Database ‘宣告資料庫 Dim rs As Recordset ‘宣告資料表 Set db=DBEngine.Workspaces(0).OpenDatabase(欲開啟的資料庫) ‘開啟資料庫 Set rs=db.OpenRecordset(欲開啟的資料表名稱, dbOpenTable) ‘開啟資料表

  24. Constant Description dbOpenTable Opens a table-type Recordset object ( Microsoft Jet workspaces only). dbOpenDynamic Opens a dynamic-type Recordset object, which is similar to an ODBC dynamic cursor. ( ODBCDirect workspaces only) dbOpenDynaset Opens a dynaset-type Recordset object, which is similar to an ODBC keyset cursor. dbOpenSnapshot Opens a snapshot-type Recordset object, which is similar to an ODBC static cursor. dbOpenForwardOnly Opens a forward-only-type Recordset object. DAO(續) • 開啟資料表的型式

  25. 牛刀小試(5) • 以DAO方式改寫牛刀小試(4)

  26. 宣告db為資料庫變數 rs為資料表變數 當按下「|<」鈕時,將第一筆記錄顯示於Text1(0)~(5)中 當按下「>|」鈕時,將最後一筆記錄顯示於Text1(0)~(5)中 當按下「<」鈕時,將指標指向上一筆記錄,並測試是否為 資料檔案的最頂端,假如是的話將指標指向第一筆記錄,將 指標所在記錄的資料顯示於Text1(0)~(5)中 當按下「>」鈕時,將指標指向下一筆記錄,並測試是否為 資料檔案的最尾端,假如是的話將指標指向最後一筆記錄, 將指標所在記錄的資料顯示於Text1(0)~(5)中 設定db為開啟資料庫db-test.mdb 而rs為以dbOpenTable型態來開啟 db中的資料表student 將指標指向第一筆資料錄,並將第 一筆記錄顯示在Text1(0)~(5)中

  27. 當按下Command5鈕時,假如鈕上的標題為「新增」當按下Command5鈕時,假如鈕上的標題為「新增」 ,則更改名稱為「確定」,同時將「刪除」鈕更名 為「取消」,然後呼叫cleartext清除Text1(0)~(5) 的內容,並執行AddNew的方法;否則,鈕上的標 題為「確定」時,更改名稱為「新增」,同時將 「取消」鈕更名為「刪除」,並將Text1(0)~(5)的 內容指派給各個欄位,最後執行Update的方法 當按下Command6鈕時,假如鈕上的標題為「刪除」 ,則顯示是否刪除的提示訊息,若確定刪除,則執行 Delete的方法,並執行Command1的動作;否則,鈕 上的標題為「取消」時,更改名稱為「刪除」,同時 將Command5鈕的標題更名為「新增」,Command7 的標題更名為「修改」

  28. 當按下Command7鈕時,假如鈕上的標題為「修改」當按下Command7鈕時,假如鈕上的標題為「修改」 ,則更改名稱為「確定」,同時將「刪除」鈕更名 為「取消」;否則,鈕上的標題為「確定」時,更改名稱為「修改」,同時將「取消」鈕更名為「刪除」 ,並將Text1(0)~(5)的內容指派給各個欄位,最後執行Update的方法 當按下Command8鈕時,先關閉以dbOpenTable型態開啟的資料表,再以dbOpenSnapshot型態來開啟student資料表,然後輸入欲查詢的姓名,以FindFirst方法找尋符合的記錄,假如找到的話,將每個欄位分別顯示於Text1(0)~(5),之後關閉資料表,改以dbOpenTable重新開啟資料表student 當按下Command9鈕時,顯示資料表的記錄總筆數 當按下Command10鈕時,顯示資料表的欄位個數

  29. 格子控制項(MSFlexGrid) • 也許你也發現到了,之前的範例都是在文字盒中顯示資料,假如碰到了同名同姓的狀況,該如何顯示資料? • 用Print敘述來顯示?也許是個好方法,不過似乎太落伍了! • 用MSFlexGrid來顯示? 酷

  30. 格子控制項(續) • 格子在哪裡?

  31. 1.格子由連續的欄與列所組成 2.欄與列交會的地方稱為儲存格(Cell) 3.儲存格分為固定與變動兩部分 a.固定:灰色部分,可用以顯示欄     及列的標題 b.變動:白色部分,用以顯示圖形     或文字資料 格子控制項(續) • 引入格子控制項 要多大就拉多大

  32. 格子控制項(續) • 常用的屬性 • Text:內容文字 • Picture:內容圖片 • Col:目前作用儲存格所在欄 • Row:目前作用儲存格所在列 • Cols:格子控制項的總欄位數 • Rows:格子控制項的總列數 • ColAlignment:欄位靠齊方式 • ColWidth:欄位寬度(以點[point]為單位) • RowHeight:列的高度(以點[point]為單位)

  33. 常數 值 描述 flexAlignLeftTop 0 資料行內容靠左、靠上對齊。 flexAlignLeftCenter 1 字串預設值。資料行內容靠左、居中對齊。 flexAlignLeftBottom 2 資料行內容靠左、靠下對齊。 flexAlignCenterTop 3 資料行內容居中、靠上對齊。 flexAlignCenterCenter 4 資料行內容置中、居中對齊。 flexAlignCenterBottom 5 資料行內容置中、靠下對齊。 flexAlignRightTop 6 資料行內容靠右、靠上對齊。 flexAlignRightCenter 7 數字的預設值。資料行內容靠右、居中對齊。 flexAlignRightBottom 8 資料行內容靠右、靠下對齊。 flexAlignGeneral 9 資料行內容採一般對齊方式之一。對於字串是「靠左、居中」對齊,數字則是「靠右、居中」對齊。 ColAlignment 欄位靠齊方式

  34. 牛刀小試(6) • 利用MSFlexGrid顯示九九乘法表

  35. 牛刀小試(6)---續 設定格子控制項的總欄位數為9,總列數為10, 令目前作用儲存格為第0列的0~8欄,分別設定 欄寬為500點、文字置中對齊,從第1欄開始依 序顯示2~9的數字為標題 令目前作用儲存格為第0欄的1~9列,從第1列開 始依序顯示1~9的數字為標題 將九九乘法的結果顯示於1~8欄與1~9列 交會的儲存格中

  36. 高階資料庫設計 SQL

  37. 何謂SQL • 一種與資料庫溝通的共通語言 • Structured Query Language • 唸成 sequel • 1970 年在 IBM 工作的 E.F. Codd,針對關聯式模型 ( relational model ),提出了抽象理論因此奠定了關聯式資料系統的基礎 • 演進 • SQL-87、SQL-89、SQL-92 以及目前最新的 SQL 3

  38. SQL的三大類別 • 為了統一資料庫的基本語法,才訂定出標準的 SQL 語法,提供使用者一致的操作指令 • 一般而言,資料庫的語法 ( SQL ) 分為三大類別 • DDL ( Data Definition Language ) • DCL ( Data Control Language ) • DML ( Data Manipulation Language )

  39. Data Definition Language • 定義資料庫物件使用的語法 • 常見的關鍵字 • Create • 建立資料庫的物件 • Alter • 變更資料庫的物件 • Drop • 刪除資料庫的物件

  40. Data Control Language • 控制資料庫物件使用狀況的語法 • 常見的關鍵字 • Grant • 賦予使用者使用物件的權限 • Revoke • 取消使用者使用物件的權限 • Commit • Transaction 正常作業完成 • Rollback • Transaction 作業異常,異動的資料回復到 Transaction 開始的狀態

  41. Data Manipulation Language • 維護資料庫資料內容的語法 • 常見的關鍵字 • Insert • 新增資料到 Table 中 • Update • 更改 Table 中的資料 • Delete • 刪除 Table 中的資料 • Select • 選取資料庫中的資料

  42. SELECT 陳述式 • SELECT-list • 識別欄位 • FROM • 指定搜尋範圍 • WHERE • 搜尋準則 • ORDER BY • 排列結果

  43. SELECT 陳述式(cont.) • GROUP BY • 將記錄分組統計 • HAVING • 於GROUP BY 所得的資料集中篩選所需記錄 • IN • 從SELECT的結果中再選取資料

  44. SELECT 陳述式(cont.) • 選取需要的欄位 • 若要選取資料表中所有欄位時 • SELECT * FROM Student SELECT field1,field2,….. FROM tablename field n :需要的欄位 tablename:資料表格名稱

  45. SELECT 陳述式(cont.) • 篩選記錄 SELECT field1,field2,….. FROM tablename WHERE criteria field n :需要的欄位 tablename:資料表格名稱 criteria:篩選條件 SELECT Name, Sex, Height FROM Student WHERE Height > 165

  46. SELECT 陳述式(cont.) SELECT * FROM tablename WHERE filed BETWEEN a1 AND a2 tablename:資料表格名稱 field:欄位名稱 a1,a2:數值 • 篩選特定範圍欄位值 SELECT * FROM Student WHERE Height BETWEEN 160 AND 175

  47. SELECT 陳述式(cont.) • 排序 SELECT field1,field2,….. FROM tablename ORDER BY sortorder field n :需要的欄位 tablename:資料表格名稱 sortorde:排序方式 SELECT Name, Sex, Height FROM Student ORDER BY Height ASC SELECT Name, Sex, Height FROM Student ORDER BY Height DESC

  48. SELECT 陳述式(cont.) • 省略重複值 SELECTDISTINCT field1,field2,….. FROM tablename field n :需要的欄位 tablename:資料表格名稱 SELECT DISTINCT Name FROM Student

  49. SELECT 陳述式(cont.) • 使用別名 SELECT field1 AS Alias1,field2 AS Alias2,… FROM tablename field n :需要的欄位 alias n :欄位的別名 tablename:資料表格名稱 SELECT Name AS Name1 FROM Student

  50. SELECT 陳述式(cont.) SELECTTOP n field1,field2,… FROM tablename ORDER BY sortorder • 限定選取資料錄的筆數 SELECTTOP n PERCENT field1,field2,… FROM tablename ORDER BY sortorder field n :需要的欄位 tablename:資料表格名稱 sortorde:排序方式

More Related