ASP存取資料庫
- 網際網路資料庫的概述
- 認識 Web 伺服器 (Server)
- 存取網站資料庫的流程
- Script 語言與ASP的介紹
- HTML 與 ASP 的異同
- SQL (Structure Query Language)指令
- 認識 ODBC (Open Database Connectivity)
- ActiveX Data Objects 及其物件介紹
- 應用實例介紹
- 線上點名系統
- 線上考試系統
- 校友線上資訊查循及登錄
VB&ASP 資料庫設計
- VB基本語法認識
- 解悉資料庫組織架構
- 資料庫物件的應用
- SQL語言介紹
- ADO物件教學
- Data Report 應用
- IIS的安裝
- ASP 物件認識
- 訪客留言版製作
- 線上投票&考試製作
ASP存取資料庫
【連結】【瀏覽】【修改】【查詢】【新增 】【 刪除】【join】
連結資料庫
- 建立asp程式欲放置的資料夾
- 將此資料夾設定成『共用』-『web共用』(例如 teach),並具有執行的權限。則往後連結時打入:http://本機 ip/teach/asp檔(含副檔名.asp) 或 http://localhost/teach/asp檔(含副檔名.asp)
- 規劃製作資料庫:欄位名稱、型態、長度、是否允許零長度... 假設此資料庫名稱為school.mdb,內含二個table,分別為 student:(id,自動編號、name,C,10、s_year,C,2、s_class,C,2、s_sex,C,2) score:(id,自動編號、name,C,10、obj1,N,長整數、obj2,N,長整數)
- 設定待連結的資料庫。有兩種方法您可以使用:
- DSN(Data Source Name):建立一個「系統資料來源名稱」。 控制台-系統管理工具-資料來源(ODBC)-系統資料來源名稱-新增-選擇適當的驅動程式(按『完成』)-輸入資料來源名稱(類似一個別名)-『選取(S)』欲連結資料庫-按『確定』 假設此資料來源名稱為『school』
- DSN-less:於ASP程式當中直接設定。 ※注意:新建一個「系統資料來源名稱」,而非「使用者資料來源名稱」,兩者差別之處為: 「系統資料來源名稱」:表示所有的使用者都可以使用這個DSN(Data Source Name)。 「使用者資料來源」:只在區域電腦中,並且只有目前使用者可以使用這個DSN。
瀏覽資料庫
範例:ADO物件透過ODBC存取Access資料庫(範例:brow.asp) 若要透過ODBC存取Access資料庫,首先直接於ASP程式碼中指定所要連結的資料庫,使用「Server.CreateObject("ADODB.Connection")」建立連線的物件後,於Driver設定為Access ODBC驅動程式名稱。使用「Open」直接連結到待存取查詢資料庫。 ASP程式碼如下:
- 建立連線物件
Set db = Server.CreateObject("ADODB.Connection")
open方法一、DBQ直接設定Access資料庫的真實路徑檔案名稱db.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=e:aspteachschool.mdb"
open方法二、使用Server.MapPath("資料庫檔案名稱") 以取得資料庫的真實路徑檔案如下(asp程式與資料庫放於同一資料夾下):db.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("school.mdb")
- open方法三、使用DSN(建議利用此方式)
db.Open "school"
- 接著設定待執行的SQL指令為「select * from student」以查詢所有的資料,將查詢的資料放置於所定義rs的Recordset當中,ASP程式碼如下: 語法: rs.Open SQL指令, Conn, 1, 1 ‘第二個參數1,表讀取。用於瀏覽時 rs.Open SQL指令, Conn, 1, 3 ‘第二個參數3,表是可以新增、修改、或刪除 程式碼:
Set rs = Server.CreateObject("ADODB.Recordset")
或
rs.Open "student",db,1,1Set rs = Server.CreateObject("ADODB.Recordset")
說明: rs.open 後面接table名稱,並用雙引號括住。 select * from student 代表由student table中選取資料。*代表全部欄位皆選取。by s_year 表由年級排序。 若只想選取選取姓名(name)、年級(s_year),則:"select name,s_year from student" order by 欄位:由小到大排列。若由大到小則:order by 欄位 DESC
SqlStr = "select * from student order by s_year"
rs.Open SqlStr,db,1,1
- 顯示執行結果: 程式碼片段:
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs("name") %></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs("s_year") %></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs("s_class") %></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs("s_sex") %></TD>
rs.MoveNext
- 關閉RecordSet和資料庫連結: 程式碼:
rs.Close
說明: 其中由rs("欄位名稱") ,讀取指定欄位的資料。 rs.MoveNext,將指標移到下一筆。 資料庫中,幾個常用的方法與屬性如下:
db.close (或 set db = nothing)
- 取得欄位資訊的方法: rs.Fields.Count:欄位總數。 rs(i).Name:第i(指標)個欄位名稱,i由0算起到rs.Fields.Count-1。
- 讀取欄位的資料,可以使用以下兩個方法: rs(i):讀取第i(指標)個欄位的資料,i由0算起到rs.Fields.Count-1。 rs(“欄位名稱”):讀取指定欄位的資料。
- 與HTML碼配合,以顯示執行的結果之相關RecordSet屬性和方法:
- rs.RecordCount:資料總筆數。
- rs.EOF:是(True)否(False)已指到最末筆。
- rs.MoveNext:將指標移到下一筆。
- rs.MovePrev:將指標移到上一筆。
- rs.MoveFirst:將指標移到第一筆。
- rs.MoveLast:將指標移到最末筆。
修改資料庫
資料修改:Update(範例:update.htm->update1.asp) Update陳述式,用來更新資料表中欄位的資料值,可以使用WHERE設定特定的條件運算式,符合條件運算式的記錄才會被更新。 語法如下:(在同一行)
UPDATE 資料表
SET 欄位新值
WHERE 條件運算式
範例:
sqlstr = "Update score Set obj1 = 22 where name = '陳世銘'"
Set a = db.Execute(sqlstr)
查詢資料庫
查詢資料:利用select指令(範例:select.htm->select1.asp) 語法如下:(在同一行)
SELECT 欄位名稱#1, 欄位名稱#2, ...
FROM 資料表名稱#1, 資料表名稱#2, ...
WHERE 條件式
ORDER BY 欄位名稱#1, 欄位名稱#2, ...
SELECT:所接的欄位名稱為待查詢的欄位,各欄位名稱之間以逗點分隔之。 FROM:所接的資料表名稱為待查詢的資料庫資料表(table)名稱,各資料表名稱之間以逗點分隔之。 WHERE:所接的條件式為設定查詢條件式。 ORDER BY:所接的欄位名稱為排序的欄位,將查詢的資料加予排序。指定多個欄位時,先以欄位名稱#1排序,若資料相同再依欄位名稱#2排序,...,各欄位名稱之間以逗點分隔之。 範例:
Set rs = Server.CreateObject("ADODB.Recordset")
sqlstr = "Select * from student where name='陳世銘'"
rs.Open SqlStr,db,1,1
新增資料庫
新增資料:利用addnew指令(範例:addnew.htm->addnew1.asp) 若要新增資料,首先於開啟資料庫後,使用AddNew方法,設定各欄位的資料後,最後使用Update方法, 語法如下:
RS.AddNew
RS(“欄名1”) = 資料1
RS(“欄名2”) = 資料2
RS.Update
刪除資料庫
刪除資料:利用delete指令(範例:delete.htm->delete1.asp) 刪除資料,首先使用SELECT的SQL指令尋找待刪除的資料,最後使用Update方法 語法如下:
rs.Delete
table的Join
二個table的連結:利用join指令(範例:join.asp) 語法如下:(在同一行)
select 欄位...
from table1 inner join table2
on table1.欄位1 比較運算子 table2.欄位1 and
on table1.欄位2 比較運算子 table2.欄位2 or
on table1.欄位3 比較運算子 table2.欄位3
範例:
Set rs = Server.CreateObject("ADODB.Recordset")
SqlStr = "SELECT score.name,student.s_year,student.s_class,score.obj1,score.obj2 FROM score inner join student on student.name=score.name order by s_year"
rs.Open SqlStr,db,1,1,1