ASP.NET + Access 数据库实例教程:从零开始构建一个简单的留言本
本教程将使用 ASP.NET Web Forms 技术和 Microsoft Access (.mdb) 数据库,这是一个经典的组合,非常适合初学者理解 Web 应用程序与数据库交互的基本原理。

(图片来源网络,侵删)
第一部分:准备工作
在开始之前,请确保您的电脑上已安装以下软件:
- .NET Framework SDK: 通常包含在 Visual Studio 安装包中,我们推荐使用 Visual Studio 2025 或更高版本(社区版免费)。
- Microsoft Access: 您需要 Access 来创建
.mdb数据库文件,如果您没有安装完整的 Access,也可以使用 Office 套件中的 Access Database Engine 来创建和操作 Access 数据库。 - IIS (可选): 如果您想在本地模拟真实服务器环境,可以安装 IIS,但 Visual Studio 自带的开发服务器已经足够学习和开发使用。
第二部分:创建数据库和表
我们将创建一个简单的留言本数据库,包含两个字段:ID(主键)和 Message)。
步骤 1:创建 Access 数据库文件
- 打开 Microsoft Access。
- 选择“空白数据库”。
- 将文件保存为
MessagesDB.mdb,并记住保存的位置(C:\YourProjectFolder\App_Data)。提示:在 ASP.NET 中,
App_Data是一个特殊的文件夹,用于存放数据文件(如.mdf,.mdb,.xml等),IIS 默认不会提供对这个文件夹的访问,因此可以增加数据安全性。
(图片来源网络,侵删)
步骤 2:创建数据表
- 打开
MessagesDB.mdb后,Access 会提示您创建一个新表,选择“创建”选项卡,然后点击“表设计”。 - 在设计视图中,定义以下字段:
| 字段名称 | 数据类型 | 说明 |
|---|---|---|
| ID | 自动编号 | 主键,每条留言的唯一标识符 |
| Message | 备注 | 存储留言的文本内容 |
| PostDate | 日期/时间 | (可选)记录留言发布的时间 |
- 选中
ID字段,在“表格工具设计”选项卡中,点击“主键”按钮,将其设置为主键。 - 关闭设计视图,Access 会提示您保存表,将其命名为
Messages。
第三部分:创建 ASP.NET Web 项目
我们创建一个 ASP.NET Web Forms 项目。
步骤 1:创建新项目
- 打开 Visual Studio。
- 选择“创建新项目”。
- 在模板搜索框中输入
ASP.NET Web Application,然后选择“ASP.NET Web 应用程序”模板(确保使用 C#)。 - 为项目命名,
GuestbookWebApp,然后点击“创建”。 - 在下一个窗口中,选择 “Web Forms” 模板,然后点击“创建”。
步骤 2:添加数据库文件到项目

(图片来源网络,侵删)
- 在“解决方案资源管理器”中,右键点击项目名称。
- 选择“添加” -> “新建文件夹”,将文件夹命名为
App_Data。 - 将之前创建的
MessagesDB.mdb文件复制到App_Data文件夹中。 - 在“解决方案资源管理器”中,右键点击
App_Data文件夹,选择“添加” -> “现有项”,然后选择MessagesDB.mdb文件,将其添加到项目中。
第四部分:编写代码实现 CRUD 功能
我们将创建几个页面来展示和操作数据。
Default.aspx (显示留言列表)
这个页面将用于从数据库中读取所有留言并显示出来。
-
设计页面:
- 从工具箱拖拽一个
GridView控件到Default.aspx页面上。 - 选中
GridView,在右下角的箭头中点击“编辑列...”。 - 清空“选定的字段”,然后点击“将此字段绑定到新字段”,添加一个
BoundField,设置DataField为Message,HeaderText为“留言内容”,同样,再添加一个BoundField,DataField为PostDate,HeaderText为“发布时间”。
- 从工具箱拖拽一个
-
后台代码 (Default.aspx.cs): 在
Page_Load事件中编写代码来绑定数据。
using System;
using System.Data;
using System.Data.OleDb;
using System.Web.UI;
namespace GuestbookWebApp
{
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
// 如果是第一次加载页面,则绑定数据
if (!IsPostBack)
{
BindGridView();
}
}
private void BindGridView()
{
// 1. 定义数据库连接字符串
// 注意:Data Source=|DataDirectory| 表示 App_Data 文件夹
string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\MessagesDB.mdb;";
// 2. 创建 SQL 查询语句
string sql = "SELECT ID, Message, PostDate FROM Messages ORDER BY PostDate DESC";
// 3. 创建连接对象
using (OleDbConnection conn = new OleDbConnection(connStr))
{
// 4. 创建适配器对象
OleDbDataAdapter adapter = new OleDbDataAdapter(sql, conn);
// 5. 创建数据集对象
DataSet ds = new DataSet();
// 6. 填充数据集
adapter.Fill(ds, "Messages");
// 7. 将数据绑定到 GridView
GridViewMessages.DataSource = ds.Tables["Messages"];
GridViewMessages.DataBind();
}
}
}
}
AddMessage.aspx (添加新留言)
这个页面包含一个文本框和一个提交按钮。
-
设计页面:
- 添加一个
TextBox,设置ID为txtMessage,TextMode为MultiLine。 - 添加一个
Button,设置ID为btnSubmit,Text为“提交留言”。
- 添加一个
-
后台代码 (AddMessage.aspx.cs): 在按钮的
Click事件中编写插入数据的代码。
using System;
using System.Data;
using System.Data.OleDb;
using System.Web.UI;
namespace GuestbookWebApp
{
public partial class AddMessage : Page
{
protected void btnSubmit_Click(object sender, EventArgs e)
{
// 1. 获取用户输入
string message = txtMessage.Text.Trim();
if (string.IsNullOrEmpty(message))
{
ClientScript.RegisterStartupScript(this.GetType(), "Alert", "alert('留言内容不能为空!');", true);
return;
}
// 2. 定义数据库连接字符串
string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\MessagesDB.mdb;";
// 3. 创建 SQL 插入语句 (使用参数化查询防止SQL注入)
string sql = "INSERT INTO Messages (Message, PostDate) VALUES (?, ?)";
// 4. 使用 try-catch-finally 处理异常
try
{
using (OleDbConnection conn = new OleDbConnection(connStr))
{
using (OleDbCommand cmd = new OleDbCommand(sql, conn))
{
// 添加参数
cmd.Parameters.AddWithValue("?", message);
cmd.Parameters.AddWithValue("?", DateTime.Now);
// 打开连接
conn.Open();
// 执行 SQL 语句
cmd.ExecuteNonQuery();
}
}
// 插入成功后,重定向到留言列表页面
Response.Redirect("Default.aspx");
}
catch (Exception ex)
{
// 显示错误信息
// 在实际项目中,应该记录日志,而不是直接显示给用户
ClientScript.RegisterStartupScript(this.GetType(), "Alert", "alert('留言失败: " + ex.Message + "');", true);
}
}
}
}
EditMessage.aspx (编辑留言)
这个页面需要根据 URL 传递的留言 ID 来加载数据,并允许用户修改。
-
设计页面:
- 添加一个
TextBox,设置ID为txtMessageEdit,TextMode为MultiLine。 - 添加一个
Button,设置ID为btnUpdate,Text为“更新留言”。 - 添加一个
HiddenField,设置ID为hfMessageId,用于存储当前编辑的留言 ID。
- 添加一个
-
后台代码 (EditMessage.aspx.cs):
using System; using System.Data; using System.Data.OleDb; using System.Web.UI;
