本節在前幾節驗證控制項基礎上,實作完整的使用者註冊功能,採用三層架構(UI、BLL、DAL)與參數化 SQL 防止注入,展示企業級開發規範。
Solution
├── WebUI (ASP.NET Web Forms)
│ ├── zhuce.aspx # 註冊頁面
│ └── zhuce.aspx.cs # 代碼後置
├── BLL (Business Logic Layer)
│ └── zhucechuli.cs # 業務邏輯處理
├── Model (Entity Layer)
│ └── zhuce.cs # 實體類別
└── DAL (Data Access Layer)
└── dbconn.cs # 資料庫連線工具
zhuce.aspx
namespace Model {
public class zhuce {
public int ID { get; set; }
public string Yhm { get; set; } // 使用者名稱
public string Yhpwd { get; set; } // 密碼
public string Sex { get; set; } // 性別
public string Hobby { get; set; } // 興趣
}
}
public class zhucechuli {
public static void addzhuce(zhuce model) {
using (SqlConnection cn = dbconn.GetConnection()) {
cn.Open();
string sql = "INSERT INTO zhuce (yhm, yhpwd, sex, hobby) VALUES (@yhm, @pwd, @sex, @hobby)";
using (SqlCommand cmd = new SqlCommand(sql, cn)) {
cmd.Parameters.AddWithValue("@yhm", model.Yhm);
cmd.Parameters.AddWithValue("@pwd", model.Yhpwd);
cmd.Parameters.AddWithValue("@sex", model.Sex);
cmd.Parameters.AddWithValue("@hobby", model.Hobby);
cmd.ExecuteNonQuery();
}
}
}
}
protected void Button1_Click(object sender, EventArgs e) {
var model = new zhuce {
Yhm = TextBox1.Text.Trim(),
Yhpwd = TextBox2.Text.Trim(),
Sex = DropDownList1.SelectedValue.Trim(),
Hobby = DropDownList2.SelectedValue.Trim()
};
zhucechuli.addzhuce(model);
// 可導向成功頁或顯示訊息
}

CREATE TABLE zhuce (
id INT IDENTITY(1,1) PRIMARY KEY,
yhm NVARCHAR(50) NOT NULL,
yhpwd NVARCHAR(50) NOT NULL,
sex NVARCHAR(10),
hobby NVARCHAR(100)
);

| 層級 | 職責 | 優勢 |
|---|---|---|
| UI (WebUI) | 介面呈現、輸入收集 | 純粹處理顯示邏輯,易於更換前端技術 |
| BLL (zhucechuli) | 業務規則、流程控制 | 核心邏輯可重用,便於單元測試 |
| Model (zhuce) | 資料結構定義 | 強型別實體,編譯期檢查 |
| DAL (dbconn) | 資料庫連線管理 | 連線字串集中維護,連線池優化 |
@yhm 等參數防止 SQL 注入connectionStrings 區段加密本節完整展示從頁面設計、實體定義、業務邏輯到資料存取的註冊功能實作。三層架構雖增加初期開發量,但大幅提升系統可維護性、可測試性與擴充性,是中大型專案的標準做法。建議進一步導入 Repository 模式、依賴注入(DI)與 ORM(Entity Framework/Dapper)提升開發效率。