using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Configuration;
using MySql.Data.MySqlClient;
using System.Data.Common;
using ConsoleApplication22.Model;
using System.Reflection; namespace ConsoleApplication22
{
class Program
{
static void Main(string[] args)
{
ReadAsyncDemo();
Console.ReadLine();
} static async void ReadAsyncDemo()
{
string selectSQL = "select * from country";
IList<Country> countryList = await MySqlRead2Async<Country>(selectSQL);
} static string MySqlConnectionString = ConfigurationManager.ConnectionStrings["MySqlConnectionString"].ConnectionString;
static async void MySqlReadAsync(string readSQL,Dictionary<string,object> parametersDic=null)
{
using (MySqlConnection conn = GetMySqlConnection())
{
if (conn.State != ConnectionState.Open)
{
conn.Open();
} using (MySqlCommand cmd = new MySqlCommand(readSQL, conn))
{
using (DbDataReader dataReader = await cmd.ExecuteReaderAsync())
{
StringBuilder selectBuilder = new StringBuilder();
while (await dataReader.ReadAsync())
{
for(int i=;i<dataReader.FieldCount;i++)
{
selectBuilder.Append(dataReader[i]+"\t");
}
selectBuilder.AppendLine();
}
Console.WriteLine(selectBuilder.ToString());
}
}
}
} static async Task<IList<T>> MySqlRead2Async<T>(string selectSQL,Dictionary<string,object> parametersDic=null)where T:class
{
IList<T> dataList = new List<T>();
using (MySqlConnection conn = GetMySqlConnection())
{
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
using(MySqlCommand selectCmd=new MySqlCommand(selectSQL, conn))
{
using (DbDataReader dataReaderAsync = await selectCmd.ExecuteReaderAsync())
{
if (dataReaderAsync.HasRows)
{
DataTable dt = new DataTable();
dt.Load(dataReaderAsync);
dataList = dt.ToDataList<T>();
}
}
}
}
return dataList;
} static async Task<int> MySqlWriteAsync(string writeSQL,Dictionary<string,object> parametersDic=null)
{
int executeResult = -;
using (MySqlConnection conn = GetMySqlConnection())
{
if (conn.State != ConnectionState.Open)
{
conn.Open();
} using (MySqlCommand cmd = new MySqlCommand(writeSQL, conn))
{
using (MySqlTransaction myTrans = await conn.BeginTransactionAsync())
{
try
{
if (parametersDic != null && parametersDic.Any())
{
foreach (var pDic in parametersDic)
{
cmd.Parameters.AddWithValue(pDic.Key, pDic.Value);
}
} cmd.Transaction = myTrans;
executeResult = await cmd.ExecuteNonQueryAsync();
myTrans.Commit();
}
catch (Exception ex)
{
myTrans.Rollback();
Console.WriteLine(ex.Message);
}
}
}
}
return executeResult;
} static MySqlConnection GetMySqlConnection()
{
MySqlConnection conn = new MySqlConnection();
conn.ConnectionString = MySqlConnectionString;
return conn;
}
} static class ExtendClass
{
public static List<T> ToDataList<T>(this DataTable dt)
{
var list = new List<T>();
var plist = new List<PropertyInfo>(typeof(T).GetProperties());
foreach (DataRow item in dt.Rows)
{
T s = Activator.CreateInstance<T>();
for (int i = ; i < dt.Columns.Count; i++)
{
PropertyInfo info = plist.Find(p => p.Name == dt.Columns[i].ColumnName);
if (info != null)
{
try
{
if (!Convert.IsDBNull(item[i]))
{
object v = null;
if (info.PropertyType.ToString().Contains("System.Nullable"))
{
v = Convert.ChangeType(item[i], Nullable.GetUnderlyingType(info.PropertyType));
}
else
{
v = Convert.ChangeType(item[i], info.PropertyType);
}
info.SetValue(s, v, null);
}
}
catch (Exception ex)
{
throw new Exception("字段[" + info.Name + "]转换出错," + ex.Message);
}
}
}
list.Add(s);
}
return list;
}
}
}
 static async Task<int> MySqlWriteAsync(string writeSQL,Dictionary<string,object> parametersDic=null)
{
int executeResult = -;
using (MySqlConnection conn = GetMySqlConnection())
{
if (conn.State != ConnectionState.Open)
{
conn.Open();
} using (MySqlCommand cmd = new MySqlCommand(writeSQL, conn))
{
using (MySqlTransaction myTrans = await conn.BeginTransactionAsync())
{
try
{
if (parametersDic != null && parametersDic.Any())
{
foreach (var pDic in parametersDic)
{
cmd.Parameters.AddWithValue(pDic.Key, pDic.Value);
}
} cmd.Transaction = myTrans;
executeResult = await cmd.ExecuteNonQueryAsync();
myTrans.Commit();
}
catch (Exception ex)
{
myTrans.Rollback();
Console.WriteLine(ex.Message);
}
}
}
}
return executeResult;
}

C# MySql Transaction Async的更多相关文章

  1. MySQL transaction

    MySQL transaction(数据库的事务) 数据库事务(Database Transaction),是指作为单个逻辑工作单元执行的一系列操作. 要么完全执行,要么完全地不执行. ACID 事务 ...

  2. mysql transaction 事务

    1.事务简介 一个"最小的"不可再分的"工作单元". 一个事务通常对应了一个完整的业务.如:银行的转账功能,a转账给b,a扣钱,b加钱. 一个事务包含一条或多条 ...

  3. NodeJs使用Mysql模块实现事务处理

    依赖模块: 1. mysql:https://github.com/felixge/node-mysql npm install mysql --save 2. async:https://githu ...

  4. MySQL监控模板说明-Percona MySQL Monitoring Template for Cacti

    http://blog.chinaunix.net/uid-16844903-id-3535535.html https://www.percona.com/doc/percona-monitorin ...

  5. Percona监控MySQL模板详解

    InnoDB Adaptive Hash Index 显示了"自适应哈希索引"的使用情况,哈希索引只能用来搜索等值的查询. # Hash table size 17700827, ...

  6. node封装mysql操作

    前言 node是基于异步的,因此在进行数据库查询操作的通常是通过回调来操作查询结果.但是在有了es7的async/await,基本不再需要回调了,所以本篇是基于async/await对mysql进行一 ...

  7. 数据库选型之MySQL(多线程并发)

    刘勇    Email: lyssym@sina.com 本博客记录作者在工作与研究中所经历的点滴,一方面给自己的工作与生活留下印记,另一方面若是能对大家有所帮助,则幸甚至哉矣! 简介 鉴于高频中心库 ...

  8. node.js 调用mysql 数据库

    1.在package.json中添加mysql依赖 命令:npm install mysql --save 2.项目中添加mysql文件夹 > 文件夹下创建config文件夹,并在config下 ...

  9. python操作MySQL数据库的三个模块

    python使用MySQL主要有两个模块,pymysql(MySQLdb)和SQLAchemy. pymysql(MySQLdb)为原生模块,直接执行sql语句,其中pymysql模块支持python ...

随机推荐

  1. 程序员的算法课(20)-常用的图算法:最小生成树(MST)

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/m0_37609579/article/de ...

  2. 有趣的动态规划(golang版本)

    多年前就听过这个动态规划,最近在复习常用算法的时候才认真学习了一下,发现蛮有意思,和大家安利一波. 定义: 准确来说,动态规划师吧一个复杂问题分解成若干个子问题,并且寻找最优子问题的一种思想,而不是一 ...

  3. 一个null,差点把系统给弄崩溃了

    今天生产上面发现了一个奇异的bug,URL上面会带上一个ID,这个ID是关联别的系统的,类似这种格式 xxx.xxx.xxx.xxx  ,是别的系统自己填写的,我们的URL会带上id=xxx.xxx. ...

  4. Linux:AWK基础

    AWK是一个强大的文本分析工具,算是Linux系统特别有用的命令了,在日志分析.文件内容分析中扮演特别重要的角色. AWK说明 简单来说awk就是把文件逐行的读入,以指定的分隔符将每行分割,分割后的部 ...

  5. 如何看一款app里面所包含的图片

    在开发制作App的过程中,有时候会想看看一些精美的App里面所设计的素材.这个时候就需要用到我给大家展现的方法了.下面就看看该如何操作能让一个App呈现出它原始的一面,这次我以Any.Do为例给大家演 ...

  6. Python一秒搭建ftp服务器,帮助你在局域网共享文件

    "老板 来碗面" "要啥面?" "内牛满面.." 最近项目上的事情弄得人心累,本来是帮着兄弟项目写套入口代码,搞着搞着就被拉着入坑了.搞开发 ...

  7. HIT2019视听觉信号处理视觉实验一

    写在前面 HIT大三上学期视听觉信号处理课程中视觉部分的实验一,经过和学长们实验的对比发现每一级实验要求都不一样,因此这里标明了是2019年秋季学期的视觉实验一. 由于时间紧张,代码没有进行任何优化, ...

  8. Apache Maven从入门到升天

    喜欢就点个赞呗! GitHub项目JavaHouse同步收录 1 引入 在日常 Java 开发中,Maven 应该是必不可少的一个工具了,当然也有人使用 Gradle 的.那么 Maven 究竟是个啥 ...

  9. [TimLinux] Python 类型与运算

    1. 内建(built-in)数据类型种类 数字类型:int(), float() 顺序(sequence): 字符串:str() 元祖:tuple() 列表:list() 字典:dict() 集合: ...

  10. Python文章相关性分析---金庸武侠小说分析-2018.1.16

    最近常听同事提及相关性分析,正巧看到这个google的开源库,并把相关操作与调试结果记录下来. 输出结果: 比较有意思的巧合是黄蓉使出打狗棒,郭靖就用了降龙十八掌,再后测试了名词的解析. 小说集可以百 ...