C# 如何从表或结果集获取列名和其他元数据

C# 如何从表或结果集获取列名和其他元数据,c#,mysql,.net,ado.net,C#,Mysql,.net,Ado.net,“数据”表中的EX 从湿度到末端的柱类型为布尔值 我想得到列名有数据是“1”的组合框 具体来说,对于结果集的每一行,我需要一个包含值1的列名集合,这样我就可以填充一个组合框 对不起,我的英语不够好 此查询将帮助您描述my_表 SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'my_database' AND TABLE_NAME = 'my_table'; 有关更多说明,请参阅链接:此查询将帮助

“数据”表中的EX

  • 从湿度到末端的柱类型为布尔值
  • 我想得到列名有数据是“1”的组合框
具体来说,对于结果集的每一行,我需要一个包含值
1
的列名集合,这样我就可以填充一个组合框

对不起,我的英语不够好


此查询将帮助您
描述my_表

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'my_database' AND TABLE_NAME = 'my_table';

有关更多说明,请参阅链接:

此查询将帮助您
描述my_表

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'my_database' AND TABLE_NAME = 'my_table';

有关更多说明,请参阅链接:

使用MySQL.net连接器(以及任何RDMS连接器)从查询中读取结果集时,将有一个DataReader对象。在MySQL的例子中,它是一个MySqlDataReader

例如(来自)

拥有有效的DataReader后,可以使用
GetSchemaTable()
方法获取描述结果集的
DataTable
数据集合。此信息作为结果集的一部分来自MySQL。例如:

       MySqlDataReader rdr = cmd.ExecuteReader();
       DataTable schema = rdr.GetSchemaTable();
DataTable
包含结果集中每列的一行。您可以访问结果集中有关列的有用信息,如下所示:

        foreach (DataRow rdrColumn in schema.Rows) {
            String columnName = rdrColumn[schema.Columns["ColumnName"]].ToString();
            String dataType = rdrColumn[schema.Columns["DataType"]].ToString();    
        }
        Dictionary<int,String> columnNames = new Dictionary<int,string>();
        int index = 0;
        foreach (DataRow row in schema.Rows) {
            columnNames.Add(index,row[schema.Columns["ColumnName"]].ToString());
            index++;
        }
还有名为
ColumnSize
NumericPrecision
NumericScale
等项目。如果需要,结果集中的每一列都可以使用这些选项

编辑 您可以制作一个包含结果集列名称的字典,如下所示:

        foreach (DataRow rdrColumn in schema.Rows) {
            String columnName = rdrColumn[schema.Columns["ColumnName"]].ToString();
            String dataType = rdrColumn[schema.Columns["DataType"]].ToString();    
        }
        Dictionary<int,String> columnNames = new Dictionary<int,string>();
        int index = 0;
        foreach (DataRow row in schema.Rows) {
            columnNames.Add(index,row[schema.Columns["ColumnName"]].ToString());
            index++;
        }
Dictionary columnNames=newdictionary();
int指数=0;
foreach(schema.Rows中的数据行){
添加(索引,行[schema.Columns[“ColumnName”]].ToString());
索引++;
}
此后,在遍历行时,可以按名称创建具有特定行值的列列表

        while (rdr.Read()) {
            /* for each row */
            List<String> listOfColumns = new List<string>();

            for (int i = 0; i < rdr.FieldCount; i++) {
                var val = rdr[i];
                if ("1" == val) {
                    /* if the value of the column is 1, add the column name from the dictionary */
                    listOfColumns.Add(columnNames[i]);
                }
            }
        }
while(rdr.Read()){
/*每行*/
List LISTOFCLUMNS=新列表();
对于(int i=0;i

有关查看结果集元数据的示例,请参见此处

当您从查询中读取结果集时,使用MySQL.net连接器(以及任何RDMS连接器),您将拥有一个DataReader对象。在MySQL的例子中,它是一个MySqlDataReader

例如(来自)

拥有有效的DataReader后,可以使用
GetSchemaTable()
方法获取描述结果集的
DataTable
数据集合。此信息作为结果集的一部分来自MySQL。例如:

       MySqlDataReader rdr = cmd.ExecuteReader();
       DataTable schema = rdr.GetSchemaTable();
DataTable
包含结果集中每列的一行。您可以访问结果集中有关列的有用信息,如下所示:

        foreach (DataRow rdrColumn in schema.Rows) {
            String columnName = rdrColumn[schema.Columns["ColumnName"]].ToString();
            String dataType = rdrColumn[schema.Columns["DataType"]].ToString();    
        }
        Dictionary<int,String> columnNames = new Dictionary<int,string>();
        int index = 0;
        foreach (DataRow row in schema.Rows) {
            columnNames.Add(index,row[schema.Columns["ColumnName"]].ToString());
            index++;
        }
还有名为
ColumnSize
NumericPrecision
NumericScale
等项目。如果需要,结果集中的每一列都可以使用这些选项

编辑 您可以制作一个包含结果集列名称的字典,如下所示:

        foreach (DataRow rdrColumn in schema.Rows) {
            String columnName = rdrColumn[schema.Columns["ColumnName"]].ToString();
            String dataType = rdrColumn[schema.Columns["DataType"]].ToString();    
        }
        Dictionary<int,String> columnNames = new Dictionary<int,string>();
        int index = 0;
        foreach (DataRow row in schema.Rows) {
            columnNames.Add(index,row[schema.Columns["ColumnName"]].ToString());
            index++;
        }
Dictionary columnNames=newdictionary();
int指数=0;
foreach(schema.Rows中的数据行){
添加(索引,行[schema.Columns[“ColumnName”]].ToString());
索引++;
}
此后,在遍历行时,可以按名称创建具有特定行值的列列表

        while (rdr.Read()) {
            /* for each row */
            List<String> listOfColumns = new List<string>();

            for (int i = 0; i < rdr.FieldCount; i++) {
                var val = rdr[i];
                if ("1" == val) {
                    /* if the value of the column is 1, add the column name from the dictionary */
                    listOfColumns.Add(columnNames[i]);
                }
            }
        }
while(rdr.Read()){
/*每行*/
List LISTOFCLUMNS=新列表();
对于(int i=0;i

有关查看结果集元数据的示例,请参见此处

我相信您正在询问如何在C#/.net中编写一个程序,从MySQL结果集中检索有关列名和列数据类型的信息。对吗?无论如何,phpmyadmin与这个问题无关。欢迎来到stackoverflow,你想用c#从mysql中读取特定数据并将其加载到combobox吗?是的,我想我想得到column name has data是“1”到combobox我相信你在问,在c#/.net中,编写一个程序,从MySQL结果集中检索有关列名和列数据类型的信息。对吗?无论如何,phpmyadmin与这个问题无关。欢迎使用stackoverflow,您想使用c#从mysql读取特定数据并将其加载到combobox吗?是的,我想获取列名,数据是“1”到combobox是的,我可以获取列名,谢谢。但是如何获取列名,数据是“1”是的,我可以得到列名,谢谢。但是如何得到有数据的列名是“1”