2014-07-19 40 views
0

EX獲得列名和其他元數據在「數據」表格如何從一個表或結果集

  • 防潮結束列的類型是布爾
  • 我想列名具有數據「 1" 組合框

具體來說,我的結果集的每一行,我需要包含的價值1,所以我可以填充一個組合框的列名集合。

對不起,我的英語我不夠好。

pic "Data" table

+0

我相信你問的是如何在C#/ .net中編寫一個程序,該程序從MySQL結果集中檢索有關列名和列數據類型的信息。那是對的嗎?無論如何,phpmyadmin與這個問題無關。 –

+0

歡迎來到stackoverflow,你想閱讀來自MySQL的具體數據使用C#並將其加載到組合框? –

+0

是的,我...... –

回答

2

使用MySQL .NET連接器(以及任何關係數據庫管理系統連接器),當你正在閱讀查詢的結果集,您將擁有一個DataReader對象。在MySQL的情況下,它是一個MySqlDataReader。

例如(來自http://dev.mysql.com/doc/connector-net/en/connector-net-tutorials-sql-command.html

 string sql = "SELECT * FROM data"; 
     MySqlCommand cmd = new MySqlCommand(sql, conn); 
     MySqlDataReader rdr = cmd.ExecuteReader(); 

     while (rdr.Read()) 
     { 
      /* iterate once per row */ 
      Console.WriteLine(rdr[0]+" -- "+rdr[1]); /* or whatever */ 
     } 
     rdr.Close(); 

一旦你有一個有效的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();  
     } 

也有一個名爲ColumnSizeNumericPrecisionNumericScale項目,等等。如果需要它們,每個結果集中的每一列都可用。

編輯 ,您可以撥打辭典保持結果集的列的名稱是這樣的:

 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++; 
     } 

此後,當您通過行迭代,您可以創建列的列表,按名稱,具有一定的行值。

 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]); 
       } 
      } 
     } 

有關查看結果集元數據的示例,請參閱此處。 http://etutorials.org/Programming/ado+net/Part+I+ADO.NET+Tutorial/Chapter+5.+DataReaders/5.4+DataReaders+and+Schema+Information/

+0

是的,我可以得到列名謝謝。但如何獲得列名稱的數據是「1」 –

+0

謝謝,如何將列表到組合框? –

相關問題