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

asp access网站架设教程
(图片来源网络,侵删)

教學目標

學習如何從零開始,建立一個可以運行在 Windows 伺服器上的 ASP 網站,並使用 Access 資料庫來儲存和讀取資料。

第一部分:環境準備

在開始之前,你需要準備好以下環境:

  1. 一台 Windows 伺服器 (或本機模擬環境)

    • 最佳選擇:雲端虛擬主機 - 很多國內的虛擬主機商都提供支援 ASP + Access 的主機方案,阿里雲、騰訊雲、西部數據、萬網等,這是最簡單的方式,你只需要上傳檔案即可。

      asp access网站架设教程
      (图片来源网络,侵删)
    • 本地開發環境 - 如果你希望在電腦上開發和測試,可以安裝 IIS (Internet Information Services),這是 Windows 系統自带的網站伺服器。

    • 如何在本機安裝 IIS (以 Windows 10/11 為例):

      1. 開始 -> 設定 -> 應用 -> 應用與功能 -> 開啟或關閉 Windows 功能。
      2. 在彈出的視窗中,找到 Internet Information Services (IIS) 並勾選它。
      3. 展開它,確保勾選了 Web 管理工具World Wide Web 服務 下的所有基本功能。
      4. 點擊確定,等待安裝完成。
      5. 安裝後,在瀏覽器中輸入 http://localhosthttp://127.0.0.1,如果能看到 IIS 歡迎頁面,表示安裝成功。
  2. ASP 程式碼編輯器

    • Visual Studio Code (免費推薦): 輕量級,支援語法高亮。
    • Dreamweaver (舊版): 傳統的 ASP 開發工具。
    • 記事本: 最簡單的工具,但不推薦,因為沒有語法提示。
  3. Microsoft Access

    asp access网站架设教程
    (图片来源网络,侵删)
    • 用來建立和編輯 .mdb.accdb 檔案,你需要有 Office 套件或單獨的 Access 軟體。

第二部分:建立網站和資料庫

步驟 1:建立網站根目錄

  • 在 IIS 中:

    1. Win + R 輸入 inetmgr 開啟 IIS 管理器。
    2. 在左側面板中,右鍵點擊「網站」->「新增網站」。
    3. 網站名稱: 填入一個你喜歡的名字,MyASPWeb
    4. 實體路徑: 點擊瀏覽,選擇一個資料夾作為你的網站存放位置,D:\MyASPWeb
    5. IP 位址: 選擇「全部未指派」。
    6. 連接埠: 保持 80 (HTTP) 或 443 (HTTPS)。
    7. 主機名稱: 可以留空,或填入 localhost
    8. 點擊「確定」,你的網站就建立好了。
  • 在虛擬主機上:

    • 登入主機控制台,找到「文件管理器」或「FTP」功能,你會有一個預設的網站根目錄,通常是 wwwroothtdocs,之後所有檔案都上傳到這個目錄。

步驟 2:建立 Access 資料庫

  1. 打開 Microsoft Access。
  2. 選擇「空白資料庫」。
  3. 在「建立」選項卡中,點擊「表設計」。
  4. 我們來設計一個簡單的 users 表:
    • 在「欄位名稱」第一行輸入 id
    • 在「資料類型」下拉式選單中,選擇「自動編號」。重要:點擊右鍵選擇「主索引鍵」
    • 在第二行輸入 username,資料類型選擇「文字」。
    • 在第三行輸入 password,資料類型選擇「文字」。
    • 在第四行輸入 email,資料類型選擇「文字」。
  5. 關閉表設計視窗,它會提示你儲存表,命名為 users
  6. 點擊左上角的「檔案」->「另存為」,將資料庫儲存為一個 .mdb 檔案(database.mdb)。注意:虛擬主機通常只支援舊版的 .mdb 格式,不支援 .accdb
  7. 將這個 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>

第四部分:部署與運行

  1. 將檔案放入目錄

    • 將你建立的 conn.asp, add_user.asp, list_users.asp, 和 database.mdb 四個檔案,全部複製到你之前設定的網站根目錄(D:\MyASPWeb)。
  2. 在瀏覽器中訪問

    • 如果你使用的是 IIS,開啟瀏覽器,輸入 http://localhost/ (如果你在建立網站時沒有指定主機名稱) 或 http://localhost/你的網站名稱/
    • 如果你使用的是虛擬主機,輸入你的網域名稱。
  3. 測試流程

    • 你應該會看到 list_users.asp 的內容,表格中可能沒有資料(因為資料庫是空的)。
    • 點擊「新增一個使用者」連結,進入 add_user.asp 頁面。
    • 填寫表單並提交。
    • 提交後,頁面會自動跳轉回 list_users.asp,你剛才新增的資料應該就出現在表格裡了。

重要提醒與常見問題

  1. 安全性問題 (極其重要!)

    • SQL 注入add_user.asp 的範例使用了簡單的字串拼接,這非常不安全,惡意用戶可以在輸入框中輸入 ' OR '1'='1 之類的代碼來破壞你的資料庫,在實際專案中,務必使用參數化查詢或對所有用戶輸入進行嚴格的過濾和驗證。
    • 密碼儲存絕對不要明文儲存密碼!應該使用 MD5, SHA256 等雜湊演算法對密碼進行加密後再存入資料庫。
    • 資料庫路徑:確保 database.mdb 檔案的權限設定正確,IIS 的預設賬戶(通常是 IIS_IUSRS 或 NETWORK SERVICE)需要有對該檔案的「讀取」和「寫入」權限,如果出現「無法開啟資料庫」錯誤,90% 是權限問題。
  2. 檔案名稱大小寫

    雖然 Windows 系統不區分檔案名稱大小寫,但為了規範,建議統一使用小寫命名檔案。

  3. 連線字串錯誤

    • 最常見的錯誤是 Data Source 的路徑錯誤,務必使用 Server.MapPath() 函數,並確保路徑正確指向伺服器上的檔案位置。
  4. 升級考慮

    • 如果你的網站流量開始變大,或者資料量增長,Access 資料庫會成為瓶頸(同時連線數有限,檔案鎖定問題等),此時應考慮將資料庫遷移到 Microsoft SQL Server (MSSQL)MySQL,並將 ASP 程式碼升級為更現代的 ASP.NET