290 likes | 425 Views
第 11 章 ADO 元件建立網頁資料庫. 11-1 網頁資料庫的基礎 11-2 Access 建立資料庫 11-3 建立資料庫連結 11-4 ASP 建立網頁資料庫. 11-1 網頁資料庫的基礎. 11-1-1 資料庫系統 11-1-2 ASP 與資料庫 11-1-3 ADO 元件簡介 11-1-4 如何建立 ASP 網頁資料庫. 11-1-1 資料庫系統. 在電腦計算機科學的應用領域,資料庫才是公司行號或家庭真正電腦化的推手,事實上早期的程式設計師都是靠著接案設計資料庫系統為生。
E N D
第11章 ADO元件建立網頁資料庫 • 11-1 網頁資料庫的基礎 • 11-2 Access建立資料庫 • 11-3 建立資料庫連結 • 11-4 ASP建立網頁資料庫
11-1 網頁資料庫的基礎 • 11-1-1 資料庫系統 • 11-1-2 ASP與資料庫 • 11-1-3 ADO元件簡介 • 11-1-4 如何建立ASP網頁資料庫
11-1-1 資料庫系統 • 在電腦計算機科學的應用領域,資料庫才是公司行號或家庭真正電腦化的推手,事實上早期的程式設計師都是靠著接案設計資料庫系統為生。 • 眾多的出勤管理系統、倉庫管理系統、進銷存系統或小至錄影帶店管理系統,這些應用程式系統都屬於不同應用的資料庫系統。
11-1-2 ASP與資料庫-1 • 轉換到Web舞台的資料庫本質並沒有轉變,仍然是儲存資料以便快速的查詢資訊,只是資料庫的使用介面變成HTML文件。 • 網頁資料庫屬於一種結合前端HTML文件的使用介面,配合後端Web伺服器和資料庫系統的一種全新的應用程式架構。
11-1-3 ADO元件簡介 • ASP程式存取資料庫是使用「ADO」(ActiveX Data Object)元件。 • ADO元件的目的是存取和編輯資料來源DSN的資料,提供一致的資料處理方式,資料來源並不限於資料庫,也可以是Excel試算表或文字檔。 • ADO元件的目的是存取資料庫記錄,只是將記錄寫入或從資料表取出,至於文件的編排輸出還是使用HTML標籤。
11-1-4 如何建立ASP網頁資料庫 • ASP建立網頁資料庫的步驟,如下所示: • 建立資料庫,第11-2節使用Access 2000建立所需的資料庫。 • 新增ODBC系統資料來源,在第11-3節分別在Windows 2000/98/SE建立ODBC系統資料來源,並且在ASP程式建立資料連結。 • ASP程式使用ADO元件存取資料庫的內容,啟動瀏覽程式執行與測試網頁資料庫,第11-4節使用ADO元件存取資料庫記錄,建立ASP網頁資料庫。
11-2 Access建立資料庫 • 11-2-1 Access欄位的資料型態 • 11-2-2 建立空白資料庫 • 11-2-3 開啟存在的資料庫 • 11-2-4 新增資料表 • 11-2-5 新增資料表欄位 • 11-2-6 刪除資料表欄位 • 11-2-7 新增資料表的記錄資料
11-3 建立資料庫連結 • 11-3-1 資料庫連結的Connection物件 • 11-3-2 建立DSN-less資料庫連結 • 11-3-3 新增ODBC系統資料來源DSN • 11-3-4 建立DSN資料庫連結
11-3-1 資料庫連結的Connection物件 • 第一步:建立Connection物件 Set objDBConn = Server.CreateObject("ADODB.Connection") • 第二步:開啟ODBC的資料來源 objDBConn.Open DSN_String • 第三步:資料庫操作與查詢 If objDBConn.State = 1 Then Response.Write("<b>目前為開啟狀態</b><br>") Else Response.Write("<b>目前為關閉狀態</b><br>") End If • 第四步:關閉資料庫連結
11-3-2 建立DSN-less資料庫連結 • DSN-less連結資料庫必須自行提供資料庫的相關資訊,以Access 2000資料庫系統為例,資料庫Books.mdb的DSN-less字串,如下所示: strDSNless = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.Mappath("Books.mdb") • Access的資料庫也可以使用下列的DNS-less字串,如下所示: strDSNless = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.Mappath("Books.mdb")
11-3-3 新增ODBC系統資料來源DSN • ODBC屬於一種標準的資料庫介面,提供各類應用程式一個標準的資料庫存取方式,如下圖所示:
11-3-4 建立DSN資料庫連結 • 在新增ODBC的DSN系統資料來源後,Connection物件Open方法開啟DSN資料來源的字串,如下所示: strDSN = "Books_list" • 字串是DSN名稱Books_list,如果在新增DSN時設定使用者名稱和密碼,此時的DSN字串,如下所示: strDSN = "DSN=Books_list;uid=hueyan;pwd=1234"
11-4 ASP建立網頁資料庫 • 11-4-1 Recordset物件的基礎 • 11-4-2 開啟記錄集合 • 11-4-3 取得欄位名稱與內容 • 11-4-4 取得與移動記錄指標 • 11-4-5 表格顯示資料表記錄 • 11-4-6 分頁顯示資料表記錄
11-4-1 Recordset物件的基礎-1 • Recordset物件屬於ADO元件最重要的物件,從英文名字看來就是「記錄集合」 。 • Recordset物件可以建立一個記錄集合把所需的資料表記錄取出,使用虛擬表格的方式,每一列為一筆記錄,每一欄為一個欄位,提供ASP程式一致的資料處理方式。
11-4-1 Recordset物件的基礎-2 • Recordset在處理上需注意下列三個事項,如下所示: • 記錄集合表格中記錄指標的移動能力(CursorType)為單向前或前後都可以移動,所謂單向指的是指標不能回頭,記錄指標能夠一筆筆往下移動,但是不能在經過後,回頭讀取已經經過的記錄。 • 資料來源本身的存取能力(LockType),主要是避免兩個人同時寫入同一筆記錄。 • 目前記錄指標的位置,Recordset的MoveFirst方法可以跳到第一筆,MoveLast方法跳到最後一筆,MoveNext方法是下一筆,MovePrevious方法為上一筆。
11-4-1 Recordset物件的基礎-3 • Recordset物件建立的步驟,如下所示: • 第一步:建立Connection物件開啟資料來源 • 第二步:建立Recordset物件 Set objRS=Server.CreateObject("ADODB.RecordSet") • 第三步:開啟記錄集合取得資料 objRS.Open "Book", objDBConn, adOpenStatic, adLockReadOnly, adCmdTable • 第四步:處理記錄集合的記錄 • 第五步:關閉Recordset物件 • 第六步:關閉資料庫連結
11-4-2 開啟記錄集合-1 • Recordset物件的Open方法,如下所示: objRS.Open Source, ActiveConnection, CursorType, LockType, Options • Source/Options參數 • ActiveConnection參數 • CursorType參數 • LockType參數
11-4-2 開啟記錄集合-2 • Source/Options參數:
11-4-2 開啟記錄集合-3 • ActiveConnection參數: • ActiveConnection參數指定開啟的資料連結,也就是建立的Connection物件。
11-4-2 開啟記錄集合-4 • CursorType參數:
11-4-2 開啟記錄集合-5 • LockType參數:
11-4-3 取得欄位名稱與內容 • 取得記錄集合的欄位數,其程式碼如下所示: intFdCount = objRS.Fields.Count • 程式碼在取得欄位數後,可以依索引取得欄位名稱、值和型態,如下所示: objRS.Fields(intI).Name objRS.Fields(intI).Value objRS.Fields(intI).Type • 程式的索引變數intI以0開始到inFdCount - 1,依序取得欄位資料。
11-4-4 取得與移動記錄指標-1 • Recordset的相關方法,如下表所示:
11-4-4 取得與移動記錄指標-2 • 在開啟記錄集合objRS後,我們就可以使用方法移動記錄集合的記錄指標,如下所示: objRS.MoveLast ' 最後一筆 objRS.MoveFirst ' 第一筆 objRS.MoveNext ' 下一筆 objRS.MovePrevious ' 上一筆 • AbsolutePosition屬性馬上跳到指定的記錄,如下所示: objRS.AbsolutePosition = 3 • 程式碼移到第3筆記錄,直接使用欄位名稱顯示該筆記錄的欄位內容,如下所示: objRS("BookID")
11-4-5 表格顯示資料表記錄 • 在取得資料表的全部記錄後,使用Do While迴路取得資料表的每一筆記錄,如下所示: Do While Not objRS.EOF …… objRS.MoveNext ' 移到下一筆記錄 Loop • 迴路條件為ObjRS.EOF屬性,檢查是否已經到了資料表最後一筆記錄之後,也就是資料表已經沒有記錄。 • 記錄欄位內容使用一個For Next迴路顯示每一個儲存格,如下所示: For intI = 0 To intFdCount ' 取得每個欄位的內容 Response.Write("<td>" & objRS(intI) & "</td>") Next
11-4-6 分頁顯示資料表記錄-1 • Recordset物件取得的記錄集合本身就是分頁顯示的虛擬表格,只需設定好相關屬性,就可以分頁顯示資料表的記錄,記錄集合分頁的相關屬性,如右圖所示:
11-4-6 分頁顯示資料表記錄-2 • Recordset物件分頁屬性的說明,如下表所示: • Recordset物件的分頁屬性,如下所示: objRS.PageSize = intPageSize intMaxPageCount = Cint(objRS.PageCount) objRS.AbsolutePage = intPageNo
11-4-6 分頁顯示資料表記錄-3 • 使用Do Loop迴路顯示分頁的記錄,如下所示: intRecCount = 0 Do While Not objRS.EOF AND intRecCount < objRS.PageSize …. objRS.MoveNext ' 下一筆記錄 intRecCount = intRecCount + 1 Loop