C#实现基于ADO.NET框架的DBHelper工具类
在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的实例。