2011-12-14 33 views
0

把一個超級簡單的查詢工具一起如下圖所示:Postgres的 - 優雅的方式帶回列名在查詢

enter image description here

問題:如何獲得列名才能通過,使他們匹配與查詢結果?

代碼是

NpgsqlConnection conn = new NpgsqlConnection("Server=127.0.0.1;Port=5432;User Id=postgres;Password=letmein;Database=dave;"); 
     conn.Open(); 

     try { 
      var colName = new NpgsqlCommand(@"SELECT column_name 
              FROM information_schema.columns 
              WHERE table_schema='public' AND table_name='simple_table' ORDER BY column_name", conn); 

      NpgsqlDataReader dr = colName.ExecuteReader(); 

      while (dr.Read()) { 
       for (int i = 0; i < dr.FieldCount; i++) 
        txtResults.Text += dr[i] + " "; 
      } 
      txtResults.Text += "\r\n \r\n"; 

      var command = new NpgsqlCommand(txtSql.Text, conn); 
      dr = command.ExecuteReader(); 

      while (dr.Read()) { 
       for (int i = 0; i < dr.FieldCount; i++) 
        txtResults.Text += dr[i] + " "; 
       txtResults.Text += "\r\n"; 
      } 
     } 
     finally { 
      conn.Close(); 
     } 

回答

0

爲參考:

for (int i = 0; i < dr.FieldCount; i++) 
{ 
    fieldnames += dr.GetName(i) + " | " ; 
} 

或這裏是正在運行的代碼:

  DataSet dset = new DataSet("npdata"); 
      NpgsqlDataAdapter NpAdapter = new NpgsqlDataAdapter(); 
      NpAdapter.SelectCommand = new NpgsqlCommand(sql, conn); 
      NpAdapter.Fill(dset, "npdata"); 
      var dtsource = dset.Tables["npdata"]; 
      dataGridView.DataSource = dtsource; 
      dataGridView.DataBind(); 
0

您可以使用DataGrid的顯示您的結果:

 DataTable dt = new DataTable(); 
     dt.Load(reader); 
     dataGridView1.DataSource = dt;