惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hacker News: Ask HN
Hacker News: Ask HN
C
Cisco Blogs
The Hacker News
The Hacker News
T
Tor Project blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
The GitHub Blog
The GitHub Blog
A
Arctic Wolf
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
The Register - Security
The Register - Security
云风的 BLOG
云风的 BLOG
Simon Willison's Weblog
Simon Willison's Weblog
P
Palo Alto Networks Blog
Vercel News
Vercel News
C
CERT Recently Published Vulnerability Notes
I
InfoQ
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
M
MIT News - Artificial intelligence
I
Intezer
aimingoo的专栏
aimingoo的专栏
U
Unit 42
C
Cyber Attacks, Cyber Crime and Cyber Security
L
LINUX DO - 热门话题
Microsoft Security Blog
Microsoft Security Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Cyberwarzone
Cyberwarzone
P
Proofpoint News Feed
P
Proofpoint News Feed
B
Blog
T
Threat Research - Cisco Blogs
博客园 - 叶小钗
Recorded Future
Recorded Future
Last Week in AI
Last Week in AI
N
News and Events Feed by Topic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Know Your Adversary
Know Your Adversary
Engineering at Meta
Engineering at Meta
G
Google Developers Blog
PCI Perspectives
PCI Perspectives
Google DeepMind News
Google DeepMind News
WordPress大学
WordPress大学
Application and Cybersecurity Blog
Application and Cybersecurity Blog
MyScale Blog
MyScale Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
Schneier on Security
Schneier on Security
N
News | PayPal Newsroom
C
Cybersecurity and Infrastructure Security Agency CISA
H
Help Net Security
博客园 - 聂微东
H
Hackread – Cybersecurity News, Data Breaches, AI and More
G
GRAHAM CLULEY

博客园 - 广阔之海

Halcon的三角函数 Halcon轮廓插值方法 C# 控件选项变化事件处理 深度学习执行速度不稳定的解决方法 Halcon - 深度学习 - 目标分类 Halcon 画一个时钟 Halcon 解方程(solve_matrix) C# 使用Serilog日志框架 Halcon 生成标定板 Halcon 中的形态学 Halcon的提取中心线算法 C# 消灭switch的面向映射编程 C#中Task的用法 Halcon 通过坐标轴过滤点云数据 Halcon图像投影映射 C# HttpClient的使用方法总结 MySql字符集导致特殊字符保存出错问题处理 Asp.Net Core 动态生成WebApi Asp.Net Core WebApi中集成Jwt认证
C# 获取MySql的数据库结构信息
广阔之海 · 2022-07-28 · via 博客园 - 广阔之海

C# 获取MySql的数据库结构信息,直接上代码:

using MySql.Data.MySqlClient;
using System;
using System.Data;
using System.Data.Common;

namespace ConsoleApp1
{
    class Program
    {
        static DbConnection _conn;

        static void Main(string[] args)
        {
            _conn = new MySqlConnection("Server=localhost;Port=3306;User=root;Password=;Charset=utf8");
            try
            {
                _conn.Open();
                GetDatabases();
                GetTables("Library");
                GetViews("Library");
                GetColumns("Library", "book");
            }
            finally
            {
                _conn.Close();
            }
            
            Console.ReadLine();
        }

        /// <summary>
        /// 获取所有数据库信息
        /// </summary>
        static void GetDatabases()
        {
            DataTable dt = _conn.GetSchema("Databases");
            foreach(DataRow dr in dt.Rows)
            {
                Console.WriteLine(
                    $"数据库名:{dr["DATABASE_NAME"]}," +
                    $"字符集:{dr["DEFAULT_CHARACTER_SET_NAME"]}," +
                    $"排序规则:{dr["DEFAULT_COLLATION_NAME"]}");
            }
        }
        /// <summary>
        /// 获取所有表信息
        /// </summary>
        /// <param name="database">数据库</param>
        static void GetTables(string database)
        {
            string[] restrictionValues = new string[4];
            restrictionValues[0] = null;        // Catalog
            restrictionValues[1] = database;    // Owner
            restrictionValues[2] = null;        // Table
            restrictionValues[3] = null;        // Column
            DataTable dt = _conn.GetSchema("Tables", restrictionValues);
            foreach (DataRow dr in dt.Rows)
            {
                Console.WriteLine(
                    $"表名:{dr["TABLE_NAME"]}," +
                    $"创建时间:{dr["CREATE_TIME"]}," +
                    $"排序规则:{dr["TABLE_COLLATION"]}," +
                    $"备注:{dr["TABLE_COMMENT"]}");
            }
        }
        /// <summary>
        /// 获取所有视图信息
        /// </summary>
        /// <param name="database">数据库</param>
        static void GetViews(string database)
        {
            string[] restrictionValues = new string[4];
            restrictionValues[0] = null;        // Catalog
            restrictionValues[1] = database;    // Owner
            restrictionValues[2] = null;        // Table
            restrictionValues[3] = null;        // Column
            DataTable dt = _conn.GetSchema("Views", restrictionValues);
            foreach (DataRow dr in dt.Rows)
            {
                Console.WriteLine(
                    $"视图名:{dr["TABLE_NAME"]}," +
                    $"定义者:{dr["DEFINER"]}," +
                    $"安全性:{dr["SECURITY_TYPE"]}");
            }
        }
        /// <summary>
        /// 获取表或视图的列信息
        /// </summary>
        /// <param name="database">数据库</param>
        /// <param name="table">表或视图</param>
        static void GetColumns(string database, string table)
        {
            string[] restrictionValues = new string[4];
            restrictionValues[0] = null;        // Catalog
            restrictionValues[1] = database;    // Owner
            restrictionValues[2] = table;       // Table
            restrictionValues[3] = null;        // Column
            DataTable dt = _conn.GetSchema("Columns", restrictionValues);
            foreach (DataRow dr in dt.Rows)
            {
                Console.WriteLine(
                    $"字段名:{dr["COLUMN_NAME"]}," +
                    $"默认值:{dr["COLUMN_DEFAULT"]}," +
                    $"可空:{dr["IS_NULLABLE"]}," +
                    $"类型:{dr["DATA_TYPE"]}," +
                    $"文本长度:{dr["CHARACTER_MAXIMUM_LENGTH"]}," +
                    $"数字精度:{dr["NUMERIC_PRECISION"]}," +
                    $"小数位数:{dr["NUMERIC_SCALE"]}," +
                    $"时间精度:{dr["DATETIME_PRECISION"]}," +
                    $"字符集:{dr["CHARACTER_SET_NAME"]}," +
                    $"排序规则:{dr["COLLATION_NAME"]}," +
                    $"字段类型:{dr["COLUMN_TYPE"]}," +
                    $"键类型:{dr["COLUMN_KEY"]}," +
                    $"扩展:{dr["EXTRA"]}," +
                    $"备注:{dr["COLUMN_COMMENT"]}");
            }
        }
    }
}