ASP 和 Access 是一個非常經典的組合,但主要用於學習、小型內部網站或個人專案,由於技術較為老舊,安全性、效能和可擴展性都有侷限,不建議用於商業級或對安全性要求高的正式網站。

(图片来源网络,侵删)
教學目標
學習如何從零開始,建立一個可以運行在 Windows 伺服器上的 ASP 網站,並使用 Access 資料庫來儲存和讀取資料。
第一部分:環境準備
在開始之前,你需要準備好以下環境:
-
一台 Windows 伺服器 (或本機模擬環境)
-
最佳選擇:雲端虛擬主機 - 很多國內的虛擬主機商都提供支援 ASP + Access 的主機方案,阿里雲、騰訊雲、西部數據、萬網等,這是最簡單的方式,你只需要上傳檔案即可。
(图片来源网络,侵删) -
本地開發環境 - 如果你希望在電腦上開發和測試,可以安裝 IIS (Internet Information Services),這是 Windows 系統自带的網站伺服器。
-
如何在本機安裝 IIS (以 Windows 10/11 為例):
- 開始 -> 設定 -> 應用 -> 應用與功能 -> 開啟或關閉 Windows 功能。
- 在彈出的視窗中,找到 Internet Information Services (IIS) 並勾選它。
- 展開它,確保勾選了 Web 管理工具 和 World Wide Web 服務 下的所有基本功能。
- 點擊確定,等待安裝完成。
- 安裝後,在瀏覽器中輸入
http://localhost或http://127.0.0.1,如果能看到 IIS 歡迎頁面,表示安裝成功。
-
-
ASP 程式碼編輯器
- Visual Studio Code (免費推薦): 輕量級,支援語法高亮。
- Dreamweaver (舊版): 傳統的 ASP 開發工具。
- 記事本: 最簡單的工具,但不推薦,因為沒有語法提示。
-
Microsoft Access
(图片来源网络,侵删)- 用來建立和編輯
.mdb或.accdb檔案,你需要有 Office 套件或單獨的 Access 軟體。
- 用來建立和編輯
第二部分:建立網站和資料庫
步驟 1:建立網站根目錄
-
在 IIS 中:
- 按
Win + R輸入inetmgr開啟 IIS 管理器。 - 在左側面板中,右鍵點擊「網站」->「新增網站」。
- 網站名稱: 填入一個你喜歡的名字,
MyASPWeb。 - 實體路徑: 點擊瀏覽,選擇一個資料夾作為你的網站存放位置,
D:\MyASPWeb。 - IP 位址: 選擇「全部未指派」。
- 連接埠: 保持
80(HTTP) 或443(HTTPS)。 - 主機名稱: 可以留空,或填入
localhost。 - 點擊「確定」,你的網站就建立好了。
- 按
-
在虛擬主機上:
- 登入主機控制台,找到「文件管理器」或「FTP」功能,你會有一個預設的網站根目錄,通常是
wwwroot或htdocs,之後所有檔案都上傳到這個目錄。
- 登入主機控制台,找到「文件管理器」或「FTP」功能,你會有一個預設的網站根目錄,通常是
步驟 2:建立 Access 資料庫
- 打開 Microsoft Access。
- 選擇「空白資料庫」。
- 在「建立」選項卡中,點擊「表設計」。
- 我們來設計一個簡單的
users表:- 在「欄位名稱」第一行輸入
id。 - 在「資料類型」下拉式選單中,選擇「自動編號」。重要:點擊右鍵選擇「主索引鍵」。
- 在第二行輸入
username,資料類型選擇「文字」。 - 在第三行輸入
password,資料類型選擇「文字」。 - 在第四行輸入
email,資料類型選擇「文字」。
- 在「欄位名稱」第一行輸入
- 關閉表設計視窗,它會提示你儲存表,命名為
users。 - 點擊左上角的「檔案」->「另存為」,將資料庫儲存為一個
.mdb檔案(database.mdb)。注意:虛擬主機通常只支援舊版的.mdb格式,不支援.accdb。 - 將這個
database.mdb檔案複製到你的網站根目錄下(D:\MyASPWeb)。
第三部分:編寫 ASP 程式碼
現在我來建立幾個核心檔案來實現資料的連線、新增和查詢。
檔案 1:conn.asp (資料庫連線檔)
這是一個非常重要的檔案,我們將所有資料庫連線的資訊放在這裡,方便其他頁面呼叫。
<%
' 宣告一個 ADODB.Connection 物件
Dim conn
Set conn = Server.CreateObject("ADODB.Connection")
' 設定連線字串
' Provider=Microsoft.Jet.OLEDB.4.0 是用於 .mdb 檔案的驅動
' Data Source= 後面是你的資料庫檔案在伺服器上的**完整路徑**
' Server.MapPath() 函數會將網站相對路徑轉換為伺服器上的絕對路徑
connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("database.mdb")
' 開啟資料庫連線
conn.Open connstr
%>
檔案 2:add_user.asp (新增使用者頁面)
這個頁面包含一個 HTML 表單和一段 ASP 程式碼來處理表單提交。
<%@ Language=VBScript %>
<%
' 檢查表單是否已提交
If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
' 引入連線檔案
Server.Execute("conn.asp")
' 從表單獲取資料
Dim username, password, email
username = Request.Form("username")
password = Request.Form("password")
email = Request.Form("email")
' 使用參數化查詢來防止 SQL Injection (雖然 Access 的參數化查詢較為複雜,這裡用簡單的拼接,實際專案中應用更安全的方式)
' 注意:這裡的 SQL 語句有潛在風險,僅作示範
Dim sql
sql = "INSERT INTO users (username, password, email) VALUES ('" & username & "', '" & password & "', '" & email & "')"
' 執行 SQL 語句
conn.Execute(sql)
' 關閉連線
conn.Close
Set conn = Nothing
' 新增成功後,導向到一個成功頁面或列表頁面
Response.Redirect "list_users.asp"
End If
%>
<!DOCTYPE html>
<html>
<head>新增使用者</title>
<meta charset="utf-8">
</head>
<body>
<h1>新增使用者</h1>
<form action="add_user.asp" method="post">
<p>使用者名稱: <input type="text" name="username" required></p>
<p>密碼: <input type="password" name="password" required></p>
<p>電子郵件: <input type="email" name="email" required></p>
<p><input type="submit" value="新增"></p>
</form>
</body>
</html>
檔案 3:list_users.asp (列出所有使用者頁面)
這個頁面會從資料庫中讀取所有使用者並顯示出來。
<%@ Language=VBScript %>
<%
' 引入連線檔案
Server.Execute("conn.asp")
' 宣告一個 ADODB.Recordset 物件用來儲存查詢結果
Dim rs
Set rs = Server.CreateObject("ADODB.Recordset")
' SQL 查詢語句,選擇所有資料並按 id 降序排列
sql = "SELECT * FROM users ORDER BY id DESC"
' 開啟記錄集,rs.Open SQL, 連線物件, 類型, 鎖定模式
' 1 = adOpenKeyset, 2 = adLockOptimistic 是常用設定
rs.Open sql, conn, 1, 2
%>
<!DOCTYPE html>
<html>
<head>使用者列表</title>
<meta charset="utf-8">
<style>
table { border-collapse: collapse; width: 50%; }
th, td { border: 1px solid #dddddd; text-align: left; padding: 8px; }
th { background-color: #f2f2f2; }
</style>
</head>
<body>
<h1>使用者列表</h1>
<a href="add_user.asp">新增一個使用者</a>
<table>
<tr>
<th>ID</th>
<th>使用者名稱</th>
<th>電子郵件</th>
</tr>
<%
' 使用 Do While ... Loop 迴圈遍歷記錄集中的每一筆資料
Do While Not rs.EOF
%>
<tr>
<td><%= rs("id") %></td>
<td><%= rs("username") %></td>
<td><%= rs("email") %></td>
</tr>
<%
' 移動到下一筆資料
rs.MoveNext
Loop
%>
</table>
<%
' 關閉並釋放物件
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
%>
</body>
</html>
第四部分:部署與運行
-
將檔案放入目錄:
- 將你建立的
conn.asp,add_user.asp,list_users.asp, 和database.mdb四個檔案,全部複製到你之前設定的網站根目錄(D:\MyASPWeb)。
- 將你建立的
-
在瀏覽器中訪問:
- 如果你使用的是 IIS,開啟瀏覽器,輸入
http://localhost/(如果你在建立網站時沒有指定主機名稱) 或http://localhost/你的網站名稱/。 - 如果你使用的是虛擬主機,輸入你的網域名稱。
- 如果你使用的是 IIS,開啟瀏覽器,輸入
-
測試流程:
- 你應該會看到
list_users.asp的內容,表格中可能沒有資料(因為資料庫是空的)。 - 點擊「新增一個使用者」連結,進入
add_user.asp頁面。 - 填寫表單並提交。
- 提交後,頁面會自動跳轉回
list_users.asp,你剛才新增的資料應該就出現在表格裡了。
- 你應該會看到
重要提醒與常見問題
-
安全性問題 (極其重要!)
- SQL 注入:
add_user.asp的範例使用了簡單的字串拼接,這非常不安全,惡意用戶可以在輸入框中輸入' OR '1'='1之類的代碼來破壞你的資料庫,在實際專案中,務必使用參數化查詢或對所有用戶輸入進行嚴格的過濾和驗證。 - 密碼儲存:絕對不要明文儲存密碼!應該使用
MD5,SHA256等雜湊演算法對密碼進行加密後再存入資料庫。 - 資料庫路徑:確保
database.mdb檔案的權限設定正確,IIS 的預設賬戶(通常是 IIS_IUSRS 或 NETWORK SERVICE)需要有對該檔案的「讀取」和「寫入」權限,如果出現「無法開啟資料庫」錯誤,90% 是權限問題。
- SQL 注入:
-
檔案名稱大小寫
雖然 Windows 系統不區分檔案名稱大小寫,但為了規範,建議統一使用小寫命名檔案。
-
連線字串錯誤
- 最常見的錯誤是
Data Source的路徑錯誤,務必使用Server.MapPath()函數,並確保路徑正確指向伺服器上的檔案位置。
- 最常見的錯誤是
-
升級考慮
- 如果你的網站流量開始變大,或者資料量增長,Access 資料庫會成為瓶頸(同時連線數有限,檔案鎖定問題等),此時應考慮將資料庫遷移到 Microsoft SQL Server (MSSQL) 或 MySQL,並將 ASP 程式碼升級為更現代的 ASP.NET。
