读书人

C# 获取数据库表列名有关问题

发布时间: 2012-05-30 20:20:04 作者: rapoo

C# 获取数据库表列名问题
我的数据库是SQLServer、现在假设我有个表A,表中有多个列,其中一列有个字段B,我怎么样才能获取到B的列名 ?
表A:
第一列 第二列
B C

最好附上代码。

[解决办法]

SQL code
select c.name from sysobjects o,syscolumns cwhere o.id =c.id and o.name='A'
[解决办法]
这样的设计不是很好,不过真要做的话,
select 所有列 from 表A where 第1列=你要判断的内容 or 第2列=你要判断的内容 ... or 第n列=你要判断的内容
查询时用 SqlDataAdapter 填充到 DataTable ,然后循环判断 DataTable 第一行的所有列的值,哪个值等于你要判断的内容,就取那列的 ColumnName。
[解决办法]
假设表名 TableA ,有列 C1, C2, C3 ,要查询的内容为 abc ,这三列的类型都是 VarChar 最好,不然就得类型转换,sql 语句:
SQL code
select C1, C2, C3 from TableA where C1='abc' or C2='abc' or C3='abc'
[解决办法]
虽然这种方法很不好,但还是贴一下代码吧
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);

[解决办法]
C# code
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  }}
[解决办法]
补充一下,要注dr[Dc]是否为空

dr[Dc]==DBNull.Value || dr[Dc]==null

或者tostring的时候会报错

读书人网 >C#

热点推荐