在C#中,基于ADO.NET框架实现一个DBHelper
工具类是一种常见的做法,用于简化数据库操作的代码。以下是一个简单的DBHelper
类示例,它使用SqlConnection
来连接SQL Server数据库,并提供了执行SQL命令、查询数据等基本功能。请注意,为了示例的简洁性,这里不包括错误处理和连接字符串的加密或安全存储。
首先,确保项目中已经引用了System.Data和System.Data.SqlClient(对于.NET Core或.NET 5/6/7等较新版本,可能需要安装NuGet包Microsoft.Data.SqlClient
)。
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient; // 或 Microsoft.Data.SqlClient
public class DBHelper
{
// 连接字符串,请根据实际情况修改
private readonly string _connectionString = "Server=your_server;Database=your_database;User Id=your_username;Password=your_password;";
// 私有构造函数,防止外部实例化
private DBHelper() { }
// 获取数据库连接
private SqlConnection GetConnection()
{
return new SqlConnection(_connectionString);
}
// 执行非查询SQL语句(如INSERT、UPDATE、DELETE)
public int ExecuteNonQuery(string sql, params SqlParameter[] parameters)
{
using (SqlConnection conn = GetConnection())
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
if (parameters != null)
{
cmd.Parameters.AddRange(parameters);
}
conn.Open();
return cmd.ExecuteNonQuery();
}
}
}
// 执行查询SQL语句,并返回DataTable
public DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters)
{
DataTable dt = new DataTable();
using (SqlConnection conn = GetConnection())
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
if (parameters != null)
{
cmd.Parameters.AddRange(parameters);
}
using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
{
conn.Open();
adapter.Fill(dt);
}
}
}
return dt;
}
// 执行查询SQL语句,并返回第一行第一列的结果(常用于查询单个值)
public object ExecuteScalar(string sql, params SqlParameter[] parameters)
{
using (SqlConnection conn = GetConnection())
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
if (parameters != null)
{
cmd.Parameters.AddRange(parameters);
}
conn.Open();
return cmd.ExecuteScalar();
}
}
}
// 更多方法可以根据需要添加,如执行存储过程等
}
// 使用示例
class Program
{
static void Main(string[] args)
{
DBHelper dbHelper = new DBHelper(); // 注意:由于构造函数是私有的,这里应该通过静态方法或单例模式获取实例
// 示例:插入数据
string insertSql = "INSERT INTO YourTable (Column1, Column2) VALUES (@Param1, @Param2)";
int affectedRows = dbHelper.ExecuteNonQuery(insertSql, new SqlParameter("@Param1", "Value1"), new SqlParameter("@Param2", "Value2"));
// 示例:查询数据
DataTable dataTable = dbHelper.ExecuteDataTable("SELECT * FROM YourTable");
// 示例:查询单个值
object singleValue = dbHelper.ExecuteScalar("SELECT COUNT(*) FROM YourTable");
// 输出结果(仅为示例)
Console.WriteLine($"Inserted rows: {affectedRows}");
// 遍历DataTable或处理singleValue...
}
}
// 注意:由于DBHelper类构造函数是私有的,上述Main方法中的实例化是示意性的。
// 实践中,可能需要通过静态方法或单例模式来获取DBHelper的实例。
请注意,上面的DBHelper
类使用了私有构造函数来防止外部直接实例化,这在实际应用中是一个好习惯,因为它允许控制类的实例化方式(例如,通过静态方法或单例模式)。然而,在Main
方法中实例化DBHelper
的示例是示意性的,因为构造函数是私有的。在实际应用中,应该通过静态方法来获取DBHelper的实例。