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)的更多相关文章

  1. 一、初识MySQL数据库 二、搭建MySQL数据库(重点) 三、使用MySQL数据库 四、认识MySQL数据库的数据类型 五、操作MySQL数据库的数据(重点)

    一.初识MySQL数据库 ###<1>数据库概述     1. 数据库         长期存储在计算机内的,由组织的可共享的数据集合         存储数据的仓库         文件 ...

  2. .NET Core Dapper操作mysql数据库

    前言 现在ORM盛行,市面上已经出现了N款不同的ORM套餐了.今天,我们不谈EF,也不聊神马黑马,就说说 Dapper.如何在.NET Core中使用Dapper操作Mysql数据库呢,让我们跟随镜头 ...

  3. Dapper操作MySQL数据库获取JSON数据中文乱码

    前言 在项目中利用Dapper将JSON数据存储到MySQL数据库,结果发现JSON数据中的中文乱码,特此记录,希望对存储JSON的童鞋能有所帮助,文中若有错误之处,还望批评指正. Dapper获取J ...

  4. MySQL数据库工具类之——DataTable批量加入MySQL数据库(Net版)

    MySQL数据库工具类之——DataTable批量加入数据库(Net版),MySqlDbHelper通用类希望能对大家有用,代码如下: using MySql.Data.MySqlClient; us ...

  5. Code First操作Mysql数据库

    前面博客也讲了,自己做一个网站,选用的是MVC+EF Code First+MySql+EasyUI,先说下技术选型.一.为什么选择MVC? 因为之前自己做的系统大部分是webForm,MVC的之前也 ...

  6. Java使用Jdbc操作MySql数据库(一)

    这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. ...

  7. Java 操作MySql数据库

    Java 项目开发中数据库操作是很重要的一个方面,对于初学者来说,MySql是比较容易熟悉的一种常见数据库,这篇文章记录了如何用Java来操作MySql数据库. 第一章 JDBC的概念 JDBC(Ja ...

  8. mysqli扩展库操作mysql数据库

    配置环境 配置php.ini文件让php支持mysqli扩展库 extension=php_mysqli.dll 建库建表 详见博客 “mysql扩展库操作mysql数据库” 查询数据库 <?p ...

  9. python【第十二篇下】操作MySQL数据库以及ORM之 sqlalchemy

    内容一览: 1.Python操作MySQL数据库 2.ORM sqlalchemy学习 1.Python操作MySQL数据库 2. ORM sqlachemy 2.1 ORM简介 对象关系映射(英语: ...

随机推荐

  1. laravel中设置表单的方式,以及获取表单的提交的数据

  2. RabbitMQ(3) Java客户端使用

    RabbitMQ针对不同的开发语言(java,python,c/++,Go等等),提供了丰富对客户端,方便使用.就Java而言,可供使用的客户端有RabbitMQ Java client. Rabbi ...

  3. 团队项目:"Jarvis For Chat"

    "Jarvis For Chat"项目简介 项目详情信息已经在上一篇博客中详细给出,详请查看博客 团队成员 姓名 学号 张扬(队长) 031602345 苏韫月 031602631 ...

  4. 转载-lvs官方文档-LVS集群中的IP负载均衡技术

    章文嵩(wensong@linux-vs.org) 2002 年 4 月 本文在分析服务器集群实现虚拟网络服务的相关技术上,详细描述了LVS集群中实现的三种IP负载均衡技术(VS/NAT.VS/TUN ...

  5. java语言基础-变量

    一丶变量的基本概念 1.什么是变量 (1).内存中的一个存储区域 (2).该区域有自己的名称(变量名),和类型(数据类型) (3.)该区域的数据可以在同一类型范围内不断变化(定义变量的主要目的是因为数 ...

  6. Ubuntu12.04 中文输入法设置

    1.ibus输入法 Ubuntu系统安装后已经自带了ibus输入法,在英语环境下默认不启动. 配置ibus自动启动可 以在ubuntu系统菜单上选择System(系统)--- Preferences( ...

  7. Python面向对象的三大特征 --- 封装、继承、多态

    一.封装 1)封装:是面向对象的一大特点:将属性和方法封装在一个抽象类中.外界使用类创建对象,然后让对象调用内部方法.对象方法的细节都被封装在类的内部. class Person():   def _ ...

  8. Linux之LVM设备的管理

    LVM可以理解为可扩展的设备:在设备空间不足的时候,保证其在原始数据不变的情况下增大设备的存储大小.那么,要达到这种效果,我们得把可用设备先比变为物理卷,再把物理卷处理为物理卷组,最后成为LVM逻辑卷 ...

  9. Xss测试

    <Script>alert(“XSS attack available!”);</Script>

  10. c# winform捕获全局异常,并记录日志

    using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using ...