【问题标题】:Fetch column schema from tables of mysql datatable从 mysql 数据表的表中获取列模式
【发布时间】:2016-03-27 13:33:45
【问题描述】:

我想从 Mysql 数据库中获取包含完整详细信息的列架构。

我有两个表,其中客户表架构类似于

而另一个表Orders表架构是这样的

我想获取与我的联接查询相关的这些列架构

using (MySqlConnection myConnection = new MySqlConnection("Server=xxxx;Uid=is;Pwd=password;Database=mydatabse"))
{
    using (MySqlCommand cmd = new MySqlCommand("SELECT a.CustomerID, a.PostalCode, b.Freight, b.ShippedDate 
                                                FROM orders b, customers a 
                                                WHERE a.CustomerID = b.CustomerID Limit 5;", myConnection))
    {
        myConnection.Open();
        using (MySqlDataReader mdr = cmd.ExecuteReader())
        {
            DataSet ds = new DataSet();
            ds.Tables.Add("Customers");

            mdr.Read();
            DataRow dr;
            dt.Columns.Add("ColName");
            dt.Columns.Add("ColType");

            for (int k = 0; k <= mdr.FieldCount - 1; k++)
            {
                dr = dt.NewRow();
                dr["ColName"] = mdr.GetName(k);
                dr["ColType"] = mdr.GetDataTypeName(k);
                dt.Rows.Add(dr);
            }
        }
    }
}

我需要我在连接查询中使用的所选列的完整详细架构。 我使用GetDataTypeName() 检索列类型,但它只返回数据类型。

我找到了这个查询

select * from INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'nsightsmysqldata' AND TABLE_NAME = 'customers';

它返回与该表相关的所有详细信息,但我只需要我在上面的联接查询中使用的那些列详细信息。

请提供可能的解决方案。

【问题讨论】:

  • 不,您无法以这种方式获取架构信息。您可能会做的是:获取整个架构并将其存储在内存对象中,并根据您的查询(列),您可以操作架构并获取所需的信息。
  • 顺便说一句,不要发布图片,而是包含更具可读性的文本模式。
  • 另外,请勿使用数据库凭据发布您的代码!

标签: c# mysql information-schema


【解决方案1】:

事实证明,您可以使用 connection object

至少它在 powershell 中对我有用。

$conn.GetSchema("Columns") 会将当前数据库中的每个列模式作为 DataTable 返回

【讨论】:

    猜你喜欢
    • 2019-03-15
    • 2016-09-17
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多