C#操作MySql数据库帮助类(Dapper,T-Sql)
using System.Text;
using MySql.Data.MySqlClient;
using System.Data;
using Dapper;
using System.Reflection; namespace DbHelper
{
public class MySqlHelper
{
private string connectionStr = "server=localhost;database=fxy;User=root;password=cxk";
//public object connection = GetConnection(connectionStr); /// <summary>
/// Dapper查询(包含存储过程及sql语句查询)
/// </summary>
/// <typeparam name="T">实体类型</typeparam>
/// <param name="sql">存储过程名称或者sql语句</param>
/// <param name="param">参数化处理</param>
/// <param name="isStoredProcedure">是否存储过程查询</param>
/// <returns></returns>
public List<T> DapperQuery<T>(string sql , object param , bool? isStoredProcedure = false) where T : new()
{
using(IDbConnection con = new MySqlConnection(connectionStr))
{
CommandType cmdType = (isStoredProcedure ?? true) ? CommandType.StoredProcedure : CommandType.Text;
try
{
List<T> queryList = con.Query<T>(sql , param , null, true , null , cmdType).ToList();
return queryList;
}
catch(Exception e)
{
throw;
}
}
} /// <summary>
/// TSQL查询
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <param name="isStoredProcedure"></param>
/// <returns></returns>
public List<T> TSqlQuery<T>(string sql,MySqlParameter[] param,bool? isStoredProcedure = false) where T:new()
{
using(MySqlConnection con = new MySqlConnection(connectionStr))
{
con.Open();
CommandType cmdType = (isStoredProcedure ?? true) ? CommandType.StoredProcedure : CommandType.Text;
MySqlCommand command = new MySqlCommand(sql , con );
command.CommandType = cmdType;
if(param != null )
{
command.Parameters.AddRange(param);
}
try
{
MySqlDataReader reader = command.ExecuteReader();
List<T> list = DataReaderToList<T>(reader);
return list;
}
catch(Exception e)
{
throw;
}
finally
{
con.Close();
}
}
} /// <summary>
/// Dapper增删改(包含存储过程及sql语句查询)
/// </summary>
/// <param name="sql">存储过程名称或者sql语句</param>
/// <param name="param">参数化处理</param>
/// <param name="isStoredProcedure">是否存储过程查询</param>
/// <returns></returns>
public bool DapperExcute(string sql , object param , bool? isStoredProcedure=false,int?commandTimeout=null)
{
bool result = false;
using(IDbConnection con = new MySqlConnection(connectionStr))
{
con.Open();
IDbTransaction tran = con.BeginTransaction();
CommandType cmdType = isStoredProcedure==true ? CommandType.StoredProcedure : CommandType.Text;
try
{
int query = con.Execute(sql , param , tran , commandTimeout , cmdType);
tran.Commit();
result = true;
}
catch(Exception e)
{
tran.Rollback();
throw;
}
finally
{
con.Close();
}
return result;
} } /// <summary>
/// TSQL增删改操作
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <param name="isStoredProcedure"></param>
/// <returns></returns>
public bool TSqlExcute(string sql , MySqlParameter[] param , bool? isStoredProcedure=false)
{
bool result = false;
using(MySqlConnection con = new MySqlConnection(connectionStr))
{
con.Open();
MySqlTransaction tran = con.BeginTransaction();
CommandType cmdType = isStoredProcedure==true ? CommandType.StoredProcedure : CommandType.Text;
MySqlCommand command = new MySqlCommand(sql , con , tran);
command.Parameters.AddRange(param);
try
{
int query = command.ExecuteNonQuery();
tran.Commit();
result = true;
}
catch(Exception e)
{
tran.Rollback();
throw;
}
finally
{
con.Close();
}
return result;
}
} /// <summary>
/// 批量数据写入
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="sql"></param>
/// <param name="dataList"></param>
/// <returns></returns>
private bool BulkInsert<T>(string sql , List<T> dataList) where T:new()
{
bool result = false;
//获取T的公共属性
Type type = dataList[ ].GetType();
PropertyInfo[] param = type.GetProperties();
List<string> properotyList = param.Select(p => p.Name).ToList();
using(MySqlConnection con= new MySqlConnection(connectionStr))
{
con.Open();
StringBuilder sb = new StringBuilder();
sb.Append(sql);
sb.Append(" VALUES");
int i = ;
foreach(var item in dataList)
{
sb.Append("(");
for(int j = ; j < properotyList.Count ; j++)
{
PropertyInfo properotyInfo = item.GetType().GetProperty(properotyList[ j ]); // 属性的信息
object properotyValue = properotyInfo.GetValue(item , null);// 属性的值
string cellValue = properotyValue == null ? "" : properotyValue.ToString();// 单元格的值
sb.Append("\"");
sb.Append(properotyValue);
sb.Append("\"");
if(j < properotyList.Count - )
{
sb.Append(",");
}
}
sb.Append(")");
if(i++ < dataList.Count - )
{
sb.Append(",");
}
}
sql = sb.ToString(); MySqlTransaction tran = con.BeginTransaction();
MySqlCommand commd = new MySqlCommand(sql , con , tran);
try
{
int query = commd.ExecuteNonQuery();
result = true;
}
catch(Exception e)
{
tran.Rollback();
throw;
}
return result;
}
} /// <summary>
/// DataReader To List
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="reader"></param>
/// <returns></returns>
private static List<T> DataReaderToList<T>(MySqlDataReader reader) where T : new()
{
List<T> list = new List<T>();
if(reader.HasRows)
{
while(reader.Read())
{
T t = new T();
Type type = t.GetType();
var properties = type.GetProperties();
foreach(var item in properties)
{
string name = item.Name;
reader.GetSchemaTable().DefaultView.RowFilter = "ColumnName= '" + name + "'";
bool check = reader.GetSchemaTable().DefaultView.Count > ;
if(check)
{
if(!item.CanWrite)
{
continue;
}
var value = reader[ name ];
if(value != DBNull.Value)
{
item.SetValue(t , value , null);
}
}
}
list.Add(t);
}
}
return list;
}
}
}
C#操作MySql数据库帮助类(Dapper,T-Sql)的更多相关文章
- 一、初识MySQL数据库 二、搭建MySQL数据库(重点) 三、使用MySQL数据库 四、认识MySQL数据库的数据类型 五、操作MySQL数据库的数据(重点)
一.初识MySQL数据库 ###<1>数据库概述 1. 数据库 长期存储在计算机内的,由组织的可共享的数据集合 存储数据的仓库 文件 ...
- .NET Core Dapper操作mysql数据库
前言 现在ORM盛行,市面上已经出现了N款不同的ORM套餐了.今天,我们不谈EF,也不聊神马黑马,就说说 Dapper.如何在.NET Core中使用Dapper操作Mysql数据库呢,让我们跟随镜头 ...
- Dapper操作MySQL数据库获取JSON数据中文乱码
前言 在项目中利用Dapper将JSON数据存储到MySQL数据库,结果发现JSON数据中的中文乱码,特此记录,希望对存储JSON的童鞋能有所帮助,文中若有错误之处,还望批评指正. Dapper获取J ...
- MySQL数据库工具类之——DataTable批量加入MySQL数据库(Net版)
MySQL数据库工具类之——DataTable批量加入数据库(Net版),MySqlDbHelper通用类希望能对大家有用,代码如下: using MySql.Data.MySqlClient; us ...
- Code First操作Mysql数据库
前面博客也讲了,自己做一个网站,选用的是MVC+EF Code First+MySql+EasyUI,先说下技术选型.一.为什么选择MVC? 因为之前自己做的系统大部分是webForm,MVC的之前也 ...
- Java使用Jdbc操作MySql数据库(一)
这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. ...
- Java 操作MySql数据库
Java 项目开发中数据库操作是很重要的一个方面,对于初学者来说,MySql是比较容易熟悉的一种常见数据库,这篇文章记录了如何用Java来操作MySql数据库. 第一章 JDBC的概念 JDBC(Ja ...
- mysqli扩展库操作mysql数据库
配置环境 配置php.ini文件让php支持mysqli扩展库 extension=php_mysqli.dll 建库建表 详见博客 “mysql扩展库操作mysql数据库” 查询数据库 <?p ...
- python【第十二篇下】操作MySQL数据库以及ORM之 sqlalchemy
内容一览: 1.Python操作MySQL数据库 2.ORM sqlalchemy学习 1.Python操作MySQL数据库 2. ORM sqlachemy 2.1 ORM简介 对象关系映射(英语: ...
随机推荐
- CF910B
题解: dp f[i][j]表示i根a,j根b要多少 然后随便转移一下 代码: #include<bits/stdc++.h> using namespace std; ][],n,a,b ...
- LeetCode OJ:Regular Expression Matching(正则表达式匹配)
Implement regular expression matching with support for '.' and '*'. '.' Matches any single character ...
- redis的Hash类型以及其操作
hashes类型 hashes类型及操作Redis hash是一个string类型的field和value的映射表.它的添加.删除操作都是0(1)(平均).hash特别适合用于存储对象.相较于将对象的 ...
- 重构Java代码的既有设计-影片出租店
案例:计算每位顾客的消费金额并打印详细信息.顾客租赁了哪些影片,租期多长,根据租赁时间和影片类型计算出费用.影片分为3类:儿童片,新片,普通片.此外需计算该顾客的积分. Movie: public c ...
- Linux系统在启动过程中mbr主引导程序被破坏的解决方案
首先,mbr主引导程序被破坏是指系统在启动过程中,磁头找不到/boot分区(windows的启动分区在c盘). 1)下面我们模拟主引导分区被破坏的情况:(在启动分区划分446M的存储大小) 2)重启( ...
- (腾讯视频)iOS开发之视频根据url获取第一帧图片,获取任一帧图片
#import <AVFoundation/AVFoundation.h> + (UIImage*) thumbnailImageForVideo:(NSURL *)videoURL at ...
- java 多线程超详细总结——阿里大牛熬夜整理
引 如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个 ...
- 实战maven私有仓库三部曲之三:Docker下搭建maven私有仓库
本章是<实战maven私有仓库>系列的第三篇,在前两章中,我们先在linux搭建maven私有仓库,然后在开发环境使用此仓库,本章我们在docker下快速搭建maven私有仓库,然后像前面 ...
- java中的Reference
这两天又重新学习了一下Reference,根据网上的资源做了汇总. Java中的引用主要有4种: 强引用 StrongReference: Object obj = new Object(); obj ...
- eclipse如何通过git把项目上传到码云上
转载:原文链接:https://www.cnblogs.com/yixtx/p/8310311.html 1.eclipse安装git插件 具体我也做过,因为我下载的eclipse版本以及由git插件 ...