ADO.NET链接数据库封装方法
/// <summary>
/// 获取一个表
/// </summary>
/// <param name="sql"></param>
/// <param name="pars"></param>
/// <returns></returns>
public DataTable GetTable(string sql, params SqlParameter[] pars)
{
// using (var con = new SqlConnection(hisConstr))
using (var con = new SqlConnection(ConnectionString))
{
try
{
var cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = sql;
cmd.Parameters.AddRange(pars);
con.Open();
var dr = cmd.ExecuteReader();
var dt = new DataTable();
dt.Load(dr);
dr.Close();
return dt;
}
catch (Exception exc)
{
throw exc;
}
finally
{
con.Close();
}
}
}
/// <summary>
/// 查询数据返回list
/// </summary>
/// <param name="sql"></param>
/// <param name="pars"></param>
/// <returns></returns>
public List<Dictionary<string, dynamic>> GetList(string sql,params SqlParameter[] pars)
{
using (var con = new SqlConnection(ConnectionString))
{
var cmd =new SqlCommand();
cmd.Connection = con;
cmd.CommandText = sql;
cmd.Parameters.AddRange(pars);
con.Open();
var dr = cmd.ExecuteReader();
var list = new List<Dictionary<string,dynamic>>();
while (dr.Read())
{
var newdic = new Dictionary<string,dynamic>();
foreach (var item in Enumerable.Range(0,dr.FieldCount).ToDictionary(dr.GetName,dr.GetValue))
{
newdic.Add(item.Key,item.Value==DBNull.Value?"":item.Value);
}
list.Add(newdic);
}
return list;
}
}
/// <summary>
/// 查询数据,返回单个值
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="pars">参数</param>
/// <returns></returns>
public object GetValue(string sql, params SqlParameter[] pars)
{
using (var con = new SqlConnection(ConnectionString))
{
var cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = sql;
cmd.Parameters.AddRange(pars);
con.Open();
var value = cmd.ExecuteScalar();
return value;
}
}
/// <summary>
/// 增删改数据
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="pars">参数</param>
/// <returns></returns>
public int SavaData(string sql, params SqlParameter[] pars)
{
using (var con = new SqlConnection(ConnectionString))
{
var cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = sql;
cmd.Parameters.AddRange(pars);
con.Open();
return cmd.ExecuteNonQuery();
}
}
/// <summary>
/// 执行事务的SQL语句
/// </summary>
/// <param name="childSqls">SQL语句集合</param>
/// <param name="childParametersList">参数列表集合</param>
/// <returns></returns>
public bool ChageDataWithTransaction(List<string> sqls, List<List<SqlParameter>> parametersList)
{
using (var con = new SqlConnection(ConnectionString))
{
con.Open();
var tran = con.BeginTransaction();
try
{
var cmd = new SqlCommand();
cmd.Connection = con;
cmd.Transaction = tran;
for (int i = 0; i < sqls.Count; i++)
{
cmd.Parameters.Clear();
cmd.CommandText = sqls[i];
cmd.Parameters.AddRange(parametersList[i].ToArray());
cmd.ExecuteNonQuery();
}
tran.Commit();
return true;
}
catch (Exception exc)
{
tran.Rollback();
throw exc;
}
finally
{
con.Close();
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· Qt个人项目总结 —— MySQL数据库查询与断言