using EFCore.Sharding;

using MySql.Data.MySqlClient;

using System;

using System.Collections.Generic;

using System.Data.Common;

namespace Core.Util

{

///

/// MySql数据库操作帮助类

///

public class MySqlHelper : DbHelper

{

#region 构造函数

///

/// 构造函数

///

/// 完整连接字符串

public MySqlHelper(string conString)

: base(DatabaseType.MySql, conString)

{

}

#endregion

#region 私有成员

protected override Dictionary DbTypeDic { get; } = new Dictionary

{

{ "boolean",typeof(bool)},

{ "bit(1)",typeof(bool)},

{ "tinyint unsigned",typeof(bool)},

{ "binary",typeof(byte[])},

{ "varbinary",typeof(byte[])},

{ "blob",typeof(byte[])},

{ "longblob",typeof(byte[])},

{ "datetime",typeof(DateTime)},

{ "double",typeof(double)},

{ "char(36)",typeof(Guid)},

{ "smallint",typeof(Int16)},

{ "int",typeof(Int32)},

{ "bigint",typeof(Int64)},

{ "tinyint",typeof(bool)},

{ "float",typeof(float)},

{ "decimal",typeof(decimal)},

{ "char",typeof(string)},

{ "varchar",typeof(string)},

{ "text",typeof(string)},

{ "longtext",typeof(string)},

{ "time",typeof(TimeSpan)}

};

#endregion

#region 外部接口

///

/// 获取数据库中的所有表

///

/// 模式(架构)

///

public override List GetDbAllTables(string schemaName = null)

{

DbProviderFactory dbProviderFactory = DbProviderFactoryHelper.GetDbProviderFactory(_dbType);

string dbName = string.Empty;

using (DbConnection conn = dbProviderFactory.CreateConnection())

{

conn.ConnectionString = _conString;

dbName = conn.Database;

}

string sql = @"SELECT TABLE_NAME as TableName,table_comment as Description

FROM INFORMATION_SCHEMA.TABLES

WHERE TABLE_SCHEMA = @dbName";

return GetListBySql(sql, new List { new MySqlParameter("@dbName", dbName) });

}

///

/// 通过连接字符串和表名获取数据库表的信息

///

/// 表名

///

public override List GetDbTableInfo(string tableName)

{

DbProviderFactory dbProviderFactory = DbProviderFactoryHelper.GetDbProviderFactory(_dbType);

string dbName = string.Empty;

using (DbConnection conn = dbProviderFactory.CreateConnection())

{

conn.ConnectionString = _conString;

dbName = conn.Database;

}

string sql = @"select DISTINCT

a.COLUMN_NAME as Name,

a.DATA_TYPE as Type,

(a.COLUMN_KEY = 'PRI') as IsKey,

(a.IS_NULLABLE = 'YES') as IsNullable,

a.COLUMN_COMMENT as Description,

a.ORDINAL_POSITION

from information_schema.columns a

where table_name=@tableName and table_schema=@dbName

ORDER BY a.ORDINAL_POSITION";

return GetListBySql(sql, new List { new MySqlParameter("@tableName", tableName), new MySqlParameter("@dbName", dbName) });

}

///

/// 生成实体文件

///

/// 表字段信息

/// 表名

/// 表描述信息

/// 文件路径(包含文件名)

/// 实体命名空间

/// 架构(模式)名

public override void SaveEntityToFile(List infos, string tableName, string tableDescription, string filePath, string nameSpace, string schemaName = null)

{

base.SaveEntityToFile(infos, tableName, tableDescription, filePath, nameSpace, schemaName);

}

#endregion

}

}

.net mysql 类库_(精华)2020年6月27日 C#类库 MySqlHelper(Ado.net数据库封装)相关推荐

  1. (精华)2020年6月26日 C#类库 百度api发送短信验证码帮助类

    using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; u ...

  2. (精华2020年6月9日更新)Angular实战篇 axio的封装

    首先先建个axio服务 ng g service 文件目录 ts文件 import { Injectable } from '@angular/core'; import axios from 'ax ...

  3. 【财经期刊FM-Radio|2020年10月27日】

    [财经期刊FM-Radio|2020年10月27日] 微信公众号: 张良信息咨询服务工作室 [今日热点新闻一览↓↓] 美股创两个月最大跌幅,欧股一个月新低,中概电商股优于大盘,美债两周最大涨幅. 美国 ...

  4. 重装战姬服务器维护,重装战姬2020年2月27日更新维护公告 重装战姬2020年2月27日更新了什么-Appfound...

    在重装战姬手游中2020年2月27日究竟更新了什么呢?具体更新内容又有哪些呢?感兴趣的小伙伴们接下来就让我们一起来看一下吧~! 亲爱的各位团长: 我们将于以下时间,对全平台服务器实施维护,并通过在线更 ...

  5. (精华)2020年7月8日 Node.js mysql的使用

    MYSQL数据库命令 操作之前应连接某个数据库 1.建表 命令:create table <表名> ( <字段名> <类型> [,-<字段名n> < ...

  6. (精华)2020年9月10日 LINQ框架 手写LINQ框架(一:LINQ的由来)

    1.LINQ简述 LINQ简称语言集成查询,设计的目的是为了解决在.NET平台上进行统一的数据查询. 微软最初的设计目的是为了解决对象/关系映射的解决方案,通过简单的使用类似T-SQL的语法进行数据实 ...

  7. (精华)2020年8月7日 微信小程序 直播功能的实现

    一:小程序代码端 小程序直播使用小程序组件 live-pusher 组件和live-player组件 首先开通直播权限 小程序开发工具内进行推流拉流都不会成功,所以需要使用两个手机进行推拉流测试: 1 ...

  8. (精华)2020年10月7日 高并发高可用 Redis实现异步架构

    前言 在后端编程时,对需要立即返回的数据我们应当立刻返回,而对于可以慢慢处理而业务复杂的我们可以选择延迟返回.这个实现使用到了异步消息队列. 异步消息队列 主要用于实现生产者-消费者模式.也就是说,这 ...

  9. (精华)2020年8月22日 ABP vNext Web应用ABP

    现在我们开始创建基于RazorPage的web应用.在解决方案中添加新的Asp.Net Core Web应用项目,名称为ZL.AbpNext.Poem.Web,然后安装volo.Abp.AspNetC ...

最新文章

  1. R语言使用tidyquant包的tq_transmute函数计算持有某只股票的天、月、周收益率、ggplot2使用条形图(bar plot)可视化股票年收益率数据使用不同的色彩表征正收益率和负收益率
  2. 狂风暴雨——电闪雷鸣篇:数据流层核心思想揭秘
  3. python编程软件开发_Python编程对软件开发人员很重要?
  4. Java程序运行纳秒级差值计算
  5. 接口访问次数_如何基于spring开发自定义注解实现对接口访问频次限制?
  6. 使用ByteArrayOutputStream解决IO乱码问题的踩坑记录
  7. 2014/08/31 Zushi
  8. 【元胞自动机】基于matlab元胞自动机超车换道【含Matlab源码 359期】
  9. java rni_Java面试总结
  10. RS485转USB插电脑上通讯不上
  11. 彻底卸载Android Studio
  12. DBA 小记 — 分库分表、主从、读写分离
  13. Python科学绘图 南丁格尔图/玫瑰图
  14. 网传腾讯大规模裁员测试工程师,腾讯相关人员否认
  15. Java中修饰变量和方法的关键字总结分析
  16. 失意时,要耐得住寂寞
  17. Xcode各种运行报错及解决方法
  18. 2007年教育技术学专业硕士点招生简章
  19. AT指令(中文详解版)(一)
  20. r5处理器_R5-4600H和i5-10400差距多大?

热门文章

  1. F5打造“感知可控,随需而变的应用”  助力企业实现非凡数字体验
  2. 活动预告 | 2020移动云客户高端峰会即将揭幕,邀您一起携手云端!
  3. 5G +边缘计算,优酷如何做云渲染?
  4. 腾讯云全面更新数据智能服务全景图!
  5. Spark+Alluxio性能调优十大技巧
  6. python语言sort_Python里的sort语句
  7. 使用Jenkins搭建自动化测试环境_环境准备_入门试炼01
  8. 单线程与多线程的区别
  9. python-小数点保留位数问题
  10. oracle us7ascii 中文,US7ASCII字符集中汉字显示问题