ASP.NET 数据库类

一、
在ASP.NET中,数据库操作是一个常见的需求,为了简化数据库操作并提高代码的可维护性和重用性,通常会创建一个通用的数据库访问类,本文将详细介绍如何实现一个通用的ASP.NET数据库类,包括其结构、功能和使用方法。
二、数据库类的设计
命名空间和引用
需要引入必要的命名空间:
using System; using System.Data; using System.Data.SqlClient; using System.Configuration; using System.Transactions;
配置文件
在Web.config文件中添加数据库连接字符串:
<configuration>
<connectionStrings>
<add name="MES" connectionString="Server=服务器地址;Database=数据库名;User Id=用户名;Password=密码;" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
数据库类的实现
(1) 创建数据库连接

private static readonly string connectionString = ConfigurationManager.ConnectionStrings["MES"].ToString();
(2) 执行SQL命令的方法
public static int ExecuteCommand(string cmdText, SqlParameter[] cmdParms)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand())
{
PrepareCommand(cmd, conn, null, CommandType.Text, cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
}
}
(3) 为SQL命令做提前的参数设定
private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
{
if (conn.State != System.Data.ConnectionState.Open)
conn.Open();
cmd.CommandTimeout = 60;
cmd.Connection = conn;
cmd.CommandText = cmdText;
if (trans != null)
cmd.Transaction = trans;
cmd.CommandType = cmdType;
if (cmdParms != null)
cmd.Parameters.AddRange(cmdParms);
}
(4) 执行查询并返回DataTable的方法
public static DataTable ExecuteDataTable(string sql, CommandType commandType, SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
PrepareCommand(cmd, conn, null, commandType, sql, parameters);
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
}
}
}
三、使用示例
以下是如何使用上述数据库类的一些示例:
插入数据
string insertSql = "INSERT INTO Articles (Author, Topic, Content) VALUES (@Author, @Topic, @Content)";
SqlParameter[] parameters = {
new SqlParameter("@Author", article.Author),
new SqlParameter("@Topic", article.Topic),
new SqlParameter("@Content", article.Content)
};
int result = SqlDBHelper.ExecuteCommand(insertSql, parameters);
查询数据
string selectSql = "SELECT * FROM Articles"; DataTable articlesTable = SqlDBHelper.ExecuteDataTable(selectSql, CommandType.Text);
更新数据
string updateSql = "UPDATE Articles SET Content = @Content WHERE Author = @Author AND Topic = @Topic";
SqlParameter[] parameters = {
new SqlParameter("@Content", updatedArticle.Content),
new SqlParameter("@Author", updatedArticle.Author),
new SqlParameter("@Topic", updatedArticle.Topic)
};
int result = SqlDBHelper.ExecuteCommand(updateSql, parameters);
删除数据
string deleteSql = "DELETE FROM Articles WHERE Author = @Author AND Topic = @Topic";
SqlParameter[] parameters = {
new SqlParameter("@Author", articleToDelete.Author),
new SqlParameter("@Topic", articleToDelete.Topic)
};
int result = SqlDBHelper.ExecuteCommand(deleteSql, parameters);
四、相关问题与解答

问题1: 如何在ASP.NET中使用事务处理?
答:在使用数据库类时,可以通过传递SqlTransaction对象来实现事务处理。
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
SqlTransaction transaction = conn.BeginTransaction();
try
{
// 执行多个SQL命令
string insertSql = "INSERT INTO Articles ...";
SqlDBHelper.ExecuteCommand(insertSql, new SqlParameter[] { /* parameters */ }, transaction);
string updateSql = "UPDATE Articles ...";
SqlDBHelper.ExecuteCommand(updateSql, new SqlParameter[] { /* parameters */ }, transaction);
// 如果所有命令都成功执行,提交事务
transaction.Commit();
}
catch (Exception ex)
{
// 如果有任何错误发生,回滚事务
try { transaction.Rollback(); } catch { }
throw; // 重新抛出异常以便调用者处理
}
finally
{
conn.Close();
}
以上内容就是解答有关“asp.net 数据库类”的详细内容了,我相信这篇文章可以为您解决一些疑惑,有任何问题欢迎留言反馈,谢谢阅读。