当前位置: 首页 > news >正文

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的实例。


http://www.mrgr.cn/news/28843.html

相关文章:

  • 批量将当前目录里的所有pdf 转化为png 格式
  • C语言 | Leetcode C语言题解之第554题砖墙
  • Rust学习(二):rust基础语法Ⅰ
  • opencv常用api
  • Leetcode 3352. Count K-Reducible Numbers Less Than N
  • C语言数据结构与算法--简单实现队列的入队和出队
  • 使用helm chart在Kubernetes部署Minio-适用于生产环境的部署方案
  • 技术上,如何复现 o1?
  • Marketo默认文件夹作用
  • 复选按钮QCheckBox
  • FastAPI动态路由设计:使用APIRouter处理复杂回调函数
  • 使用Faiss进行K-Means聚类
  • 【Linux】Shell编程入门
  • 面试真题-TCP的三次握手
  • 鸿蒙开发笔记_电商严选02_登录页面跳转到我的页面、并传值
  • 【C++】——继承详解
  • GPU加速生物信息分析的尝试
  • react-native和原生android的交互
  • ThreadX源码:Cortex-A7的tx_thread_irq_nesting_end(嵌套中断结束动作).s汇编代码分析
  • 算法竞赛命题数据生成方法
  • 硬件工程师笔试面试学习汇总——器件篇目录
  • iOS 18 新功能:控制中心大變身!控制項目自由選配
  • 电路设计学习(一)
  • 【AcWing】前缀和与差分(一维 + 二维)
  • 企业级即时通讯平台有哪些?探究适合企业使用的即时通讯工具
  • 72、结合无人机进行rk3588oak-lite跟踪目标物体进行识别、跟踪、保持距离