ASP.NET数据库连接类实例
在ASP.NET中,数据库连接类通常用于封装与数据库的交互逻辑,例如执行查询、插入、更新和删除操作。通过封装数据库操作,可以提高代码的可维护性和复用性。以下是一个完整的ASP.NET数据库连接类的示例,使用ADO.NET与SQL Server数据库进行交互。
·
在ASP.NET中,数据库连接类通常用于封装与数据库的交互逻辑,例如执行查询、插入、更新和删除操作。通过封装数据库操作,可以提高代码的可维护性和复用性。以下是一个完整的ASP.NET数据库连接类的示例,使用ADO.NET与SQL Server数据库进行交互。
1. 创建数据库连接类
以下是一个通用的数据库连接类,封装了常见的数据库操作。
using System;
using System.Data;
using System.Data.SqlClient;
public class DatabaseHelper
{
private string connectionString;
// 构造函数,接收连接字符串
public DatabaseHelper(string connectionString)
{
this.connectionString = connectionString;
}
// 执行查询,返回DataTable
public DataTable ExecuteQuery(string query, SqlParameter[] parameters = null)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand command = new SqlCommand(query, connection))
{
if (parameters != null)
{
command.Parameters.AddRange(parameters);
}
connection.Open();
SqlDataAdapter adapter = new SqlDataAdapter(command);
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
return dataTable;
}
}
}
// 执行非查询操作(插入、更新、删除),返回受影响的行数
public int ExecuteNonQuery(string query, SqlParameter[] parameters = null)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand command = new SqlCommand(query, connection))
{
if (parameters != null)
{
command.Parameters.AddRange(parameters);
}
connection.Open();
return command.ExecuteNonQuery();
}
}
}
// 执行标量查询,返回单个值
public object ExecuteScalar(string query, SqlParameter[] parameters = null)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand command = new SqlCommand(query, connection))
{
if (parameters != null)
{
command.Parameters.AddRange(parameters);
}
connection.Open();
return command.ExecuteScalar();
}
}
}
}
2. 配置数据库连接字符串
在Web.config文件中配置数据库连接字符串。
<configuration>
<connectionStrings>
<add name="MyConnectionString" connectionString="Server=.;Database=MyDB;Integrated Security=True;" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
3. 在ASP.NET页面中使用数据库连接类
以下示例展示了如何在ASP.NET页面中使用DatabaseHelper类执行数据库操作。
HTML部分 (Default.aspx):
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1.Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>数据库操作示例</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="btnQuery" runat="server" Text="查询数据" OnClick="btnQuery_Click" />
<asp:Button ID="btnInsert" runat="server" Text="插入数据" OnClick="btnInsert_Click" />
<asp:Button ID="btnUpdate" runat="server" Text="更新数据" OnClick="btnUpdate_Click" />
<asp:Button ID="btnDelete" runat="server" Text="删除数据" OnClick="btnDelete_Click" />
<br />
<asp:GridView ID="GridView1" runat="server"></asp:GridView>
<br />
<asp:Label ID="lblResult" runat="server" Text=""></asp:Label>
</div>
</form>
</body>
</html>
代码部分 (Default.aspx.cs):
using System;
using System.Data;
using System.Web.Configuration;
namespace WebApplication1
{
public partial class Default : System.Web.UI.Page
{
private DatabaseHelper dbHelper;
protected void Page_Load(object sender, EventArgs e)
{
// 从Web.config中获取连接字符串
string connectionString = WebConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
dbHelper = new DatabaseHelper(connectionString);
}
protected void btnQuery_Click(object sender, EventArgs e)
{
// 查询数据
string query = "SELECT * FROM Users";
DataTable dataTable = dbHelper.ExecuteQuery(query);
// 绑定到GridView
GridView1.DataSource = dataTable;
GridView1.DataBind();
lblResult.Text = "查询成功,显示数据。";
}
protected void btnInsert_Click(object sender, EventArgs e)
{
// 插入数据
string query = "INSERT INTO Users (UserName, Email) VALUES (@UserName, @Email)";
SqlParameter[] parameters = {
new SqlParameter("@UserName", "JohnDoe"),
new SqlParameter("@Email", "johndoe@example.com")
};
int rowsAffected = dbHelper.ExecuteNonQuery(query, parameters);
lblResult.Text = $"插入成功,受影响的行数: {rowsAffected}";
}
protected void btnUpdate_Click(object sender, EventArgs e)
{
// 更新数据
string query = "UPDATE Users SET Email = @Email WHERE UserName = @UserName";
SqlParameter[] parameters = {
new SqlParameter("@Email", "john.doe@example.com"),
new SqlParameter("@UserName", "JohnDoe")
};
int rowsAffected = dbHelper.ExecuteNonQuery(query, parameters);
lblResult.Text = $"更新成功,受影响的行数: {rowsAffected}";
}
protected void btnDelete_Click(object sender, EventArgs e)
{
// 删除数据
string query = "DELETE FROM Users WHERE UserName = @UserName";
SqlParameter[] parameters = {
new SqlParameter("@UserName", "JohnDoe")
};
int rowsAffected = dbHelper.ExecuteNonQuery(query, parameters);
lblResult.Text = $"删除成功,受影响的行数: {rowsAffected}";
}
}
}
4. 运行示例
-
确保数据库中存在
Users表,表结构如下:
CREATE TABLE Users (
UserID INT PRIMARY KEY IDENTITY(1,1),
UserName NVARCHAR(50),
Email NVARCHAR(100)
);
-
运行项目并访问
Default.aspx页面。 -
点击按钮执行查询、插入、更新和删除操作,观察结果。
5. 扩展功能
-
事务支持:可以在
DatabaseHelper类中添加事务支持,确保多个操作的原子性。 -
异步操作:使用
ExecuteNonQueryAsync、ExecuteReaderAsync等方法实现异步数据库操作。 -
连接池:通过配置连接字符串启用连接池,提高性能。
通过封装数据库连接类,可以将数据库操作逻辑集中管理,提高代码的可维护性和复用性。在实际开发中,可以根据需求扩展类的功能,例如支持事务、异步操作等。
更多推荐



所有评论(0)