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简介 对象关系映射(英语: ...
随机推荐
- Netty实例几则
Netty是基于JDK NIO的网络框架 简化了NIO编程, 不用程序自己维护selector, 将网络通信和数据处理的部分做了分离 多用于做底层的数据通信, 心跳检测(keepalived) 1. ...
- CSS样式--移动划过超链接鼠标变手型详解
用css控制鼠标样式的语法如下:<span style="cursor:*">文本或其它页面元素</span>把 * 换成如下15个效果的一种: 下面是对这 ...
- Spring入门4.AOP配置深入
Spring入门4.AOP配置深入 代码下载 链接: http://pan.baidu.com/s/11mYEO 密码: x7wa 前言: 之前学习AOP中的一些概念,包括连接点.切入点(pointc ...
- WebLogic和Tomcat
J2ee开发主要是浏览器和服务器进行交互的一种结构.逻辑都是在后台进行处理,然后再把结果传输回给浏览器.可以看出服务器在这种架构是非常重要的. 这几天接触到两种Java的web服务器,做项目用的Tom ...
- 联想北研实习生面试-嵌入式Linux研发工程师
8月中旬暑假去联想北研参加了实习生面试,面试职位是嵌入式Linux研发工程师.投完简历第二天,主管回复我邮件,意思是说随时来面试,到北研时候给他打个电话就行.于是我回复条短信表示感谢,并约好时间第二天 ...
- java基础 题和知识点总结, 关于String s是否默认初始化为null......,new一个对象和类静态域,是不是在内存中不是一个地方
一道笔试题 22. 下面代码的运行结果为:() import java.io.*; import java.util.*; public class foo{ public static void m ...
- Conky配置文件
Conky是一个可以在linux系统中实时显示系统性能的工具,美观且十分好用,我们选择安装conky-all程序包 # set to yes if you want Conky to be forke ...
- vue.js 源代码学习笔记 ----- 工具方法 error
import config from '../config' import { warn } from './debug' import { inBrowser } from './env' // 这 ...
- PHP中MySQL、MySQLi和PDO的用法和区别【原创】
对于一个初学PHP的自己,对数据库的连接有着很大的疑惑,从Java转到PHP.数据库连接变了,以前只知道JDBC连接数据库,或者直接用框架调用,对于的PHP的数据库连接方式,及其应用.不是很了解,于是 ...
- Http权威指南(cookie以及web认证机制)
其实对于cookie,想必大家都不陌生,cookie目前主要用于客户端的识别技术. 说到客户端识别技术,就不得不说一个登录态的问题了.登录态顾名思义,用于验证用户的登录与否. 1.登录态 对于PC端网 ...