封装 SqlHelper 数据访问类
using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data; using System.Configuration; namespace DAL.SqlHelper { public static class SqlHelper { private static string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; /// <summary> /// 增删改操作 /// </summary> /// <param name="sql">数据库查询sql语句</param> /// <param name="pars">参数</param> /// <returns>int</returns> /// <exception cref="Exception"></exception> public static int UpDate(string sql, params SqlParameter[] pars) { SqlConnection conn = new SqlConnection(connStr); SqlCommand cmd = new SqlCommand(sql, conn); cmd.Parameters.Clear(); if (pars != null) { cmd.Parameters.AddRange(pars); } try { conn.Open(); return cmd.ExecuteNonQuery(); } catch (Exception ex) { //记录日志 //向上抛出错误信息 throw new Exception(ex.Message); } finally { conn.Close(); } } /// <summary> /// 查询单一结果 /// </summary> /// <param name="sql"></param> /// <param name="pars"></param> /// <returns>object</returns> /// <exception cref="Exception"></exception> public static object ExecuteScalar(string sql, params SqlParameter[] pars) { SqlConnection conn = new SqlConnection(connStr); SqlCommand cmd = new SqlCommand(sql, conn); cmd.Parameters.Clear(); if(pars != null) { cmd.Parameters.AddRange(pars); } try { conn.Open(); return cmd.ExecuteScalar(); }catch (Exception ex) { //记录到日志 throw new Exception(ex.Message); } finally { conn.Close(); } } /// <summary> /// 获取DataTtable 数据集 /// </summary> /// <param name="sql"></param> /// <param name="pars"></param> /// <returns>DataTtable</returns> /// <exception cref="Exception"></exception> public static DataTable GetDataTable(string sql, params SqlParameter[] pars) { SqlConnection conn = new SqlConnection (connStr); SqlCommand cmd = new SqlCommand (sql, conn); DataSet dt = new DataSet(); cmd.Parameters.Clear(); if(pars != null) { cmd.Parameters.AddRange(pars); } try { SqlDataAdapter sa = new SqlDataAdapter(cmd); conn.Open(); sa.Fill(dt); return dt.Tables[0]; }catch (Exception ex) { //写入日志 conn.Close(); throw new Exception(ex.Message); }finally { conn.Close(); } } /// <summary> /// 获取 SqlDataReader 结果 /// </summary> /// <param name="sql"></param> /// <param name="pars"></param> /// <returns>SqlDataReader</returns> /// <exception cref="Exception"></exception> public static SqlDataReader GetSqlDataReader(string sql, params SqlParameter[] pars) { SqlConnection conn = new SqlConnection (connStr); SqlCommand cmd = new SqlCommand(sql, conn); cmd.Parameters.Clear(); if (pars != null) { cmd.Parameters.AddRange(pars); } try { conn.Open(); return cmd.ExecuteReader(CommandBehavior.CloseConnection); }catch (Exception ex) { conn.Close(); throw new Exception(ex.Message); } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构