我的数据库是SQLServer、现在假设我有个表A,表中有多个列,其中一列有个字段B,我怎么样才能获取到B的列名 ? 
表A:
第一列  第二列
  B       C最好附上代码。

解决方案 »

  1.   


    select c.name from sysobjects o,syscolumns c
    where o.id =c.id and o.name='A'
      

  2.   

    在代码里可以实现,假如读取到DataTable(前提是你没有重新改变数据库的列名),用dt.Columns[0].ColumnName//这是第一列的列名
      

  3.   

    这样的设计不是很好,不过真要做的话,
    select 所有列 from 表A where 第1列=你要判断的内容 or 第2列=你要判断的内容 ... or 第n列=你要判断的内容
    查询时用 SqlDataAdapter 填充到 DataTable ,然后循环判断 DataTable 第一行的所有列的值,哪个值等于你要判断的内容,就取那列的 ColumnName。
      

  4.   

    假设表名 TableA ,有列 C1, C2, C3 ,要查询的内容为 abc ,这三列的类型都是 VarChar 最好,不然就得类型转换,sql 语句:
    select C1, C2, C3 from TableA where C1='abc' or C2='abc' or C3='abc'
    [code=C#]SqlConnection conn = 创建一个连接;
    SqlDataAdapter ada = new SqlDataAdapter(查询语句, conn);
    DataTable dtbl = new DataTable();
    ada.Fill(dtbl);
    foreach (DataColumn item in dtbl.Columns)
    {
        if(dtbl.Rows[0][item] == "abc")
        {
             你要的列名就是 item.ColumnName
        }
    }[code]
      

  5.   

    虽然这种方法很不好,但还是贴一下代码吧  
         string Data = "XXX"; 
         string ColumnName=string.Empty;       foreach (DataRow dr in Dt.Rows)
           {
               foreach (System.Data.DataColumn Dc in Dt.Columns)
               {
                   if (dr[Dc].ToString().Equals(Data))
                   {
                       ColumnName = Dc.ColumnName;
                       break;
                   }
               }
               if (ColumnName != string.Empty)
                   break;
     
           }       Response.Write(ColumnName);
      

  6.   

    SqlConnection conn = 创建一个连接;
    SqlDataAdapter ada = new SqlDataAdapter(查询语句, conn);
    DataTable dtbl = new DataTable();
    ada.Fill(dtbl);
    foreach (DataColumn item in dtbl.Columns)
    {
      if(dtbl.Rows[0][item] == "abc")
      {
      你要的列名就是 item.ColumnName
      }
    }
      

  7.   

    补充一下,要注dr[Dc]是否为空dr[Dc]==DBNull.Value || dr[Dc]==null或者tostring的时候会报错