4.5.1 在连接上使用 GetSchema

连接对象的GetSchema()方法可用于检索有关当前连接的数据库的模式信息。架构信息以DataTable. 模式信息被组织成许多集合。GetSchema()根据所需的信息,可以使用不同形式的 方法。该方法有以下三种形式 GetSchema()

  • GetSchema()- 此调用将返回可用集合的列表。

  • GetSchema(String)- 此调用返回有关在字符串参数中命名的集合的信息。如果使用字符串MetaDataCollections,则返回所有可用集合的列表。GetSchema() 这与不带任何参数 的调用相同。

  • GetSchema(String, String[])- 在此调用中,第一个字符串参数表示集合名称,第二个参数表示限制值的字符串数组。限制值限制将返回的数据量。Microsoft .NET 文档中对限制值进行了更详细的解释 。

收藏品

集合可以大致分为两种类型:所有数据提供者共有的集合,以及特定提供者特定的集合。

常见的集合。  以下集合对所有数据提供者都是通用的:

  • 元数据集合

  • 数据源信息

  • 数据类型

  • 限制

  • 保留字

提供者特定的集合。  以下是 Connector/NET 当前提供的集合,以及前面显示的常见集合:

  • 数据库

  • 用户

  • 外键

  • 索引列

  • 索引

  • 外键列

  • 自定义函数

  • 观点

  • 查看列

  • 程序参数

  • 程序

  • 触发器

C# 代码示例。  可以使用以下代码获取可用集合的列表:

using System;
using System.Data;
using System.Text;
using MySql.Data;
using MySql.Data.MySqlClient;
namespace ConsoleApplication2
{
    class Program
    {
        private static void DisplayData(System.Data.DataTable table)
        {
            foreach (System.Data.DataRow row in table.Rows)
            {
                foreach (System.Data.DataColumn col in table.Columns)
                {
                    Console.WriteLine("{0} = {1}", col.ColumnName, row[col]);
                }
                Console.WriteLine("============================");
            }
        }
        static void Main(string[] args)
        {
            string connStr = "server=localhost;user=root;database=world;port=3306;password=******";
            MySqlConnection conn = new MySqlConnection(connStr);
            try
            {
                Console.WriteLine("Connecting to MySQL...");
                conn.Open();
                DataTable table = conn.GetSchema("MetaDataCollections");
                //DataTable table = conn.GetSchema("UDF");
                DisplayData(table);
                conn.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            Console.WriteLine("Done.");
        }
    }
}

有关GetSchema()方法和架构集合 的更多信息,请参见Microsoft .NET 文档