Asp .Net Core系列:基于MySQL的DBHelper帮助类和SQL Server的DBHelper帮助类
文章目录
- MySQLDBHelper
- MSSQLDBHelper
MySQLDBHelper
app.config中添加配置
<connectionStrings><add name="MySqlConn" connectionString="server=localhost;port=3306;user=root;password=123456;database=db1;SslMode=none"/></connectionStrings>
MySQLDBHelper
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;namespace Common
{/// <summary>/// 数据库操作类/// </summary>public class MySQLDBHelper{public readonly static string MySqlConn = ConfigurationManager.ConnectionStrings["MySqlConn"].ConnectionString.ToString();/// <summary>/// 执行增、删、改的方法:ExecuteNonQuery,返回true,false/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static bool ExecuteNonQuery(string sql, MySqlParameter[] pms){using (MySqlConnection conn = new MySqlConnection(MySqlConn)){conn.Open();using (MySqlTransaction transaction = conn.BeginTransaction()){using (MySqlCommand cmd = new MySqlCommand(sql, conn)){if (pms != null && pms.Length > 0){cmd.Parameters.AddRange(pms);}int rows = cmd.ExecuteNonQuery();transaction.Commit();return rows > 0;}}}}/// <summary>/// 执行增、删、改的方法:ExecuteNonQuery,返回true,false/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static bool ExecuteNonQuery(string sql, Dictionary<string, object> pms){MySqlParameter[] parameters = null;if (pms != null && pms.Count > 0){parameters = DictionaryToMySqlParameters(pms).ToArray();}return ExecuteNonQuery(sql, parameters);}/// <summary>/// 执行增、删、改的方法:ExecuteNonQuery,返回true,false/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static bool ExecuteNonQuery(string sql){return ExecuteNonQuery(sql, new MySqlParameter[] { });}/// <summary>/// 将查出的数据装到实体里面,返回一个List/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static List<T> ExecuteQuery<T>(string sql, MySqlParameter[] pms) where T : new(){using (var connection = new MySqlConnection(MySqlConn)){connection.Open();using (var command = new MySqlCommand(sql, connection)){if (pms != null && pms.Length > 0){command.Parameters.AddRange(pms);}using (var reader = command.ExecuteReader()){List<T> tList = new List<T>();while (reader.Read()) // 遍历结果集中的每一行数据 {var t = ConvertToModel<T>(reader);tList.Add(t);}return tList;}}}}/// <summary>/// 将查出的数据装到实体里面,返回一个List/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static List<T> ExecuteQuery<T>(string sql, Dictionary<string, object> pms) where T : new(){MySqlParameter[] parameters = null;if (pms != null){parameters = DictionaryToMySqlParameters(pms).ToArray();}return ExecuteQuery<T>(sql, parameters);}/// <summary>/// 将查出的数据装到实体里面,返回一个List/// </summary>/// <param name="sql"></param>/// <returns></returns>public static List<T> ExecuteQuery<T>(string sql) where T : new(){return ExecuteQuery<T>(sql, new MySqlParameter[] { });}/// <summary>/// 将查出的数据装到实体里面,返回一个实体/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static T ExecuteQueryOne<T>(string sql, MySqlParameter[] pms) where T : new(){using (var connection = new MySqlConnection(MySqlConn)){connection.Open();using (var command = new MySqlCommand(sql, connection)){if (pms != null && pms.Length > 0){command.Parameters.AddRange(pms);}using (var reader = command.ExecuteReader()){while (reader.Read()) // 遍历结果集中的每一行数据 {var t = ConvertToModel<T>(reader);return t;}return default(T);}}}}/// <summary>/// 将查出的数据装到实体里面,返回一个实体/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static T ExecuteQueryOne<T>(string sql, Dictionary<string, object> pms) where T : new(){MySqlParameter[] parameters = null;if (pms != null && parameters.Length > 0){parameters = DictionaryToMySqlParameters(pms).ToArray();}return ExecuteQueryOne<T>(sql, parameters);}/// <summary>/// 将查出的数据装到实体里面,返回一个实体/// </summary>/// <typeparam name="T"></typeparam>/// <param name="sql"></param>/// <returns></returns>public static T ExecuteQueryOne<T>(string sql) where T : new(){return ExecuteQueryOne<T>(sql, new MySqlParameter[] { });}/// <summary>/// 将查出的数据装到table里,返回一个DataTable/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public DataTable ExecuteQueryDataTable(string sql, MySqlParameter[] pms = null){DataTable dt = new DataTable();using (MySqlDataAdapter adapter = new MySqlDataAdapter(sql, MySqlConn)){if (pms != null){adapter.SelectCommand.Parameters.AddRange(pms);}adapter.Fill(dt);}return dt;}/// <summary>/// 将查出的数据装到table里,返回一个DataTable/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public DataTable ExecuteQueryDataTable(string sql, Dictionary<string, object> pms){MySqlParameter[] parameters = null;if (pms != null){parameters = DictionaryToMySqlParameters(pms).ToArray();}return ExecuteQueryDataTable(sql, parameters);}/// <summary>/// 将查出的数据装到table里,返回一个DataTable/// </summary>/// <param name="sql"></param>/// <returns></returns>public DataTable ExecuteQueryDataTable(string sql){MySqlParameter[] parameters = null;return ExecuteQueryDataTable(sql, parameters);}/// <summary>/// 字典转MySqlParameters/// </summary>/// <param name="parameters"></param>/// <returns></returns>public static List<MySqlParameter> DictionaryToMySqlParameters(Dictionary<string, object> parameters){List<MySqlParameter> MySqlParameters = new List<MySqlParameter>();foreach (var kvp in parameters){string parameterName = kvp.Key;object parameterValue = kvp.Value;// 创建 MySqlParameter 对象 MySqlParameter MySqlParameter = new MySqlParameter(parameterName, parameterValue);MySqlParameters.Add(MySqlParameter);}return MySqlParameters;}/// <summary>/// 按列名转换(单条使用比较方便)/// </summary>/// <param name="reader"></param>/// <returns></returns>public static T ConvertToModel<T>(MySqlDataReader reader) where T : new(){T t = new T();PropertyInfo[] propertys = t.GetType().GetProperties();List<string> drColumnNames = new List<string>();for (int i = 0; i < reader.FieldCount; i++){drColumnNames.Add(reader.GetName(i));}foreach (PropertyInfo pi in propertys){if (drColumnNames.Contains(pi.Name)){if (!pi.CanWrite){continue;}var value = reader[pi.Name];if (value != DBNull.Value){pi.SetValue(t, value, null);}}}return t;}}
}
MSSQLDBHelper
app.config中添加配置
<connectionStrings><add name="SqlConn" connectionString="Server=127.0.0.1;Database=db1;UserId=sa;Password=123456;"/></connectionStrings>
MSSQLDBHelper
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;namespace Common
{/// <summary>/// 数据库帮助类/// </summary>public class MSSQLDBHelper{public readonly static string SqlConn = ConfigurationManager.ConnectionStrings["SqlConn"].ConnectionString.ToString();/// <summary>/// 执行增、删、改的方法:ExecuteNonQuery,返回true,false/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static bool ExecuteNonQuery(string sql, SqlParameter[] pms){using (SqlConnection conn = new SqlConnection(SqlConn)){conn.Open();using (SqlTransaction transaction = conn.BeginTransaction()){using (SqlCommand cmd = new SqlCommand(sql, conn)){if (pms != null && pms.Length > 0){cmd.Parameters.AddRange(pms);}int rows = cmd.ExecuteNonQuery();transaction.Commit();return rows > 0;}}}}/// <summary>/// 执行增、删、改的方法:ExecuteNonQuery,返回true,false/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static bool ExecuteNonQuery(string sql, Dictionary<string, object> pms){SqlParameter[] parameters = null;if (pms != null && pms.Count > 0){parameters = DictionaryToSqlParameters(pms).ToArray();}return ExecuteNonQuery(sql, parameters);}/// <summary>/// 执行增、删、改的方法:ExecuteNonQuery,返回true,false/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static bool ExecuteNonQuery(string sql){return ExecuteNonQuery(sql, new SqlParameter[] { });}/// <summary>/// 将查出的数据装到实体里面,返回一个List/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static List<T> ExecuteQuery<T>(string sql, SqlParameter[] pms) where T : new(){using (var connection = new SqlConnection(SqlConn)){connection.Open();using (var command = new SqlCommand(sql, connection)){if (pms != null && pms.Length > 0){command.Parameters.AddRange(pms);}using (var reader = command.ExecuteReader()){List<T> tList = new List<T>();while (reader.Read()) // 遍历结果集中的每一行数据 {var t = ConvertToModel<T>(reader);tList.Add(t);}return tList;}}}}/// <summary>/// 将查出的数据装到实体里面,返回一个List/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static List<T> ExecuteQuery<T>(string sql, Dictionary<string, object> pms) where T : new(){SqlParameter[] parameters = null;if (pms != null){parameters = DictionaryToSqlParameters(pms).ToArray();}return ExecuteQuery<T>(sql, parameters);}/// <summary>/// 将查出的数据装到实体里面,返回一个List/// </summary>/// <param name="sql"></param>/// <returns></returns>public static List<T> ExecuteQuery<T>(string sql) where T : new(){return ExecuteQuery<T>(sql, new SqlParameter[] { });}/// <summary>/// 将查出的数据装到实体里面,返回一个实体/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static T ExecuteQueryOne<T>(string sql, SqlParameter[] pms) where T : new(){using (var connection = new SqlConnection(SqlConn)){connection.Open();using (var command = new SqlCommand(sql, connection)){if (pms != null && pms.Length > 0){command.Parameters.AddRange(pms);}using (var reader = command.ExecuteReader()){while (reader.Read()) // 遍历结果集中的每一行数据 {var t = ConvertToModel<T>(reader);return t;}return default(T);}}}}/// <summary>/// 将查出的数据装到实体里面,返回一个实体/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static T ExecuteQueryOne<T>(string sql, Dictionary<string, object> pms) where T : new(){SqlParameter[] parameters = null;if (pms != null && parameters.Length > 0){parameters = DictionaryToSqlParameters(pms).ToArray();}return ExecuteQueryOne<T>(sql, parameters);}/// <summary>/// 将查出的数据装到实体里面,返回一个实体/// </summary>/// <typeparam name="T"></typeparam>/// <param name="sql"></param>/// <returns></returns>public static T ExecuteQueryOne<T>(string sql) where T : new(){return ExecuteQueryOne<T>(sql, new SqlParameter[] { });}/// <summary>/// 将查出的数据装到table里,返回一个DataTable/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public DataTable ExecuteQueryDataTable(string sql, SqlParameter[] pms = null){DataTable dt = new DataTable();using (SqlDataAdapter adapter = new SqlDataAdapter(sql, SqlConn)){if (pms != null){adapter.SelectCommand.Parameters.AddRange(pms);}adapter.Fill(dt);}return dt;}/// <summary>/// 将查出的数据装到table里,返回一个DataTable/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public DataTable ExecuteQueryDataTable(string sql, Dictionary<string, object> pms){SqlParameter[] parameters = null;if (pms != null){parameters = DictionaryToSqlParameters(pms).ToArray();}return ExecuteQueryDataTable(sql, parameters);}/// <summary>/// 将查出的数据装到table里,返回一个DataTable/// </summary>/// <param name="sql"></param>/// <returns></returns>public DataTable ExecuteQueryDataTable(string sql){SqlParameter[] parameters = null;return ExecuteQueryDataTable(sql, parameters);}/// <summary>/// 字典转SqlParameters/// </summary>/// <param name="parameters"></param>/// <returns></returns>public static List<SqlParameter> DictionaryToSqlParameters(Dictionary<string, object> parameters){List<SqlParameter> SqlParameters = new List<SqlParameter>();foreach (var kvp in parameters){string parameterName = kvp.Key;object parameterValue = kvp.Value;// 创建 SqlParameter 对象 SqlParameter SqlParameter = new SqlParameter(parameterName, parameterValue);SqlParameters.Add(SqlParameter);}return SqlParameters;}/// <summary>/// 按列名转换(单条使用比较方便)/// </summary>/// <param name="reader"></param>/// <returns></returns>public static T ConvertToModel<T>(SqlDataReader reader) where T : new(){T t = new T();PropertyInfo[] propertys = t.GetType().GetProperties();List<string> drColumnNames = new List<string>();for (int i = 0; i < reader.FieldCount; i++){drColumnNames.Add(reader.GetName(i));}foreach (PropertyInfo pi in propertys){if (drColumnNames.Contains(pi.Name)){if (!pi.CanWrite){continue;}var value = reader[pi.Name];if (value != DBNull.Value){pi.SetValue(t, value, null);}}}return t;}}
}
相关文章:
Asp .Net Core系列:基于MySQL的DBHelper帮助类和SQL Server的DBHelper帮助类
文章目录 MySQLDBHelperMSSQLDBHelper MySQLDBHelper app.config中添加配置 <connectionStrings><add name"MySqlConn" connectionString"serverlocalhost;port3306;userroot;password123456;databasedb1;SslModenone"/></connectionStrin…...

【排序】对各种排序的总结
文章目录 前言1. 排序算法的复杂度及稳定性分析2. 排序算法的性能测试2.1 重复率较低的随机值排序测试2.2 重复率较高的随机值排序测试 前言 本篇是基于我这几篇博客做的一个总结: 《简单排序》(含:冒泡排序,直接插入排序&#x…...

Apache ActiveMQ RCE CNVD-2023-69477 CVE-2023-46604
漏洞简介 Apache ActiveMQ官方发布新版本,修复了一个远程代码执行漏洞,攻击者可构造恶意请求通过Apache ActiveMQ的61616端口发送恶意数据导致远程代码执行,从而完全控制Apache ActiveMQ服务器。 影响版本 Apache ActiveMQ 5.18.0 before …...

C语言可变参数输入
本博文源于笔者正在学习的可变参数输入,可变参数是c语言函数中的一部分,下面本文就以一个很小的demo演示可变参数的编写 问题来源 想要用可变参数进行多个整数相加 方法源码 #include<stdio.h> #include<stdlib.h> #include<stdarg.h…...
飞天使-k8s知识点10-kubernetes资源对象3-controller
文章目录 pod探针 控制器 pod 概述: 1. pod是k8s中的最小单元 2. 一个pod中可以运行一个容器,也可以运行多个容器 3. 运行多个容器的话,这些容器是一起被调度的 4. Pod的生命周期是短暂的,不会自愈,是用完就销毁的实体…...
【Vue技巧】Vue2和Vue3组件上使用v-model的实现原理
ChatGPT4.0国内站点,支持GPT4 Vision 视觉模型:海鲸AI 在Vue中,v-model 是一个语法糖,用于在输入框、选择框等表单元素上创建双向数据绑定。当你在自定义组件中实现 v-model 功能时,你需要理解它背后的原理:…...
博客随手记
随手记...

【2023】java常用HTTP客户端对比以及使用(HttpClient/OkHttp/WebClient)
💻目录 1、介绍2、使用2.1、添加配置2.1.1、依赖2.1.2、工具类2.1.3、实体2.1.4、Controller接口 2.2、Apache HttpClient使用2.3 、OkHttp使用2.4、WebClient使用 1、介绍 现在java使用的http客户端主要包括以下几种 而这些中使用得最频繁的主要是: A…...
微信小程序获取来源场景值
https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/scene.html#返回来源信息的场景 https://developers.weixin.qq.com/miniprogram/dev/api/base/app/life-cycle/wx.getLaunchOptionsSync.html 场景值列表 只有1008是来源群聊 /** * 生命周期函数--监…...

Vue3:vue-cli项目创建及vue.config.js配置
一、node.js检测或安装: node -v node.js官方 二、vue-cli安装: npm install -g vue/cli # OR yarn global add vue/cli/*如果安装的时候报错,可以尝试一下方法 删除C:\Users**\AppData\Roaming下的npm和npm-cache文件夹 删除项目下的node…...

关于CAD导入**地球的一些问题讨论
先上示例: 上图是将北京王佐停车场的红线CAD图导入到图新地球效果,如果看官正是需要这样的效果,那么请你继续往下看,全是干货! 在地球中导入CAD图可以做为电子沙盘。对于工程人来说,是极有帮助的。以前一直用谷歌地球,大约在2020年左右,就被和谐了。当时感觉挺可惜的。…...
Semaphore信号量详解
在Java并发编程中,Semaphore是一个非常重要的工具类。它位于java.util.concurrent包中,为我们提供了一种限制对临界资源的访问的机制。你可以将其视为一个同步控制的瑞士军刀,因为它既能够控制对资源的并发访问数量,也能够保证资源…...

Python的核心知识点整理大全66(已完结撒花)
目录 D.3 忽略文件 .gitignore 注意 D.4 初始化仓库 D.5 检查状态 D.6 将文件加入到仓库中 D.7 执行提交 D.8 查看提交历史 D.9 第二次提交 hello_world.py D.10 撤销修改 hello_world.py 注意 D.11 检出以前的提交 往期快速传送门👆(在文…...

k8s的存储卷
存储卷------数据卷 把容器内的目录,和宿主机的目录进行挂载。 容器在系统上的生命周期是短暂的,delete,k8s用控制(deployment)创建的pod,delete相当于重启,容器的状态也会回复到初始状态。 …...

Git 实战指南:常用指令精要手册(持续更新)
👑专栏内容:Git⛪个人主页:子夜的星的主页💕座右铭:前路未远,步履不停 目录 一、Git 安装过程1、Windows 下安装2、Cent os 下安装3、Ubuntu 下安装 二、配置本地仓库1、 初始化 Git 仓库2、配置 name 和 e…...
关于SpringMVC前后端传值总结
一、传递方式 1、查询参数&路径参数 查询参数: URI:/teachers?typeweb GetMapping("/klasses/teachers") public List<Teacher> getKlassRelatedTeachers(String type ) { ... }如果查询参数type与方法的名称相同,则直接将web传入…...

【排序】归并排序(C语言实现)
文章目录 1. 递归版的归并排序1.1 归并排序的思想2. 递归版的归并排序的实现 2. 非递归版的归并排序 1. 递归版的归并排序 1.1 归并排序的思想 归并排序(MERGE - SORT)是建立在归并操作上的一种有效的排序算法, 该算法是采用分治法(Divide a…...
127. 单词接龙
和433.最小基因变化这道题一样的解法。 https://blog.csdn.net/qq_43606119/article/details/135538247 class Solution {public int ladderLength(String beginWord, String endWord, List<String> wordList) {Set<String> cnt new HashSet<>();for (int …...
计算机算法贪心算法
贪心算法(Greedy Algorithm)是一种常见的算法思想,它在每一步选择当前状态下最优的解决方案,从而希望最终能够达到全局最优解。 贪心算法的基本思路是每一步都选择当前状态下的局部最优解,而忽略了当前选择所带来的影…...

基于css实现动画效果
介绍 本文将会基于css,实现各种动画效果,接下来会从简单几个例子入手。 案例 三颗球 <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8" /><title>React App</title><style>…...

地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...

【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...