2017-10-15 103 views
0

问题确实如此,我只想从表中找到所有列名称,我正在寻找尽可能基本的方法。如何从SQL数据库返回列名称

+2

您可以查询数据库模式的建议[这里](https://stackoverflow.com/questions/1054984/how-can-i-get-column-names-from-a -table-in-sql-server) – rango

+5

[我如何从SQL Server的表中获取列名?](https://stackoverflow.com/questions/1054984/how-can-i-get-column -sql-server -name-from-a-table-in-sql-server) –

+0

链接中的16个链接都不是OP最可能想要的内容(请参阅pim的答案),所以我不认为它是重复的。 –

回答

2

如果您运行以下SQL,您将得到一个空的行集。您可以通过使用SqlCommandDataReader来解释列名称。

using (var conn = new SqlConnection("your_conn_string")) 
{ 
    var command = new SqlCommand("select * from [dbo].[tableName] where 1 = 2"); 
    conn.Open(); 

    using(var dr = command.ExecuteReader()) 
    { 
     var columns = new List<string>(); 

     for(int i=0;i<reader.FieldCount;i++) 
     { 
      columns.Add(reader.GetName(i)); 
     } 
    } 
} 
0

这完全取决于数据库。几乎所有的数据库都有一些关于数据库的元数据。大多数实现information_schema方法的某些版本。

例如,常见的方式,以获取有关列的信息是:

select column_name 
from information_schema.columns 
where table_name = ? and table_schema = ?; 

?是占位符的表名和模式。

+1

他在问如何使用C# – OctoCode

0

这应该做你想做的。

public string[] getColumnsName() 
{ 
    List<string> listacolumnas=new List<string>(); 
    using (SqlConnection connection = new SqlConnection(Connection)) 
     using (SqlCommand command = connection.CreateCommand()) 
     { 
      command.CommandText = "select c.name from sys.columns c inner join sys.tables t on t.object_id = c.object_id and t.name = 'Usuarios' and t.type = 'U'"; 
      connection.Open(); 
      using (var reader = command.ExecuteReader()) 
      { 
       while (reader.Read()) 
       { 
        listacolumnas.Add(reader.GetString(0)); 
       } 
      } 
     } 
    return listacolumnas.ToArray(); 
} 

Get column name from SQL Server

相关问题