我正在尝试获取我存储在sql Server 2008 R2中的表的列名.
我真的尝试了一切,但我似乎无法找到如何做到这一点.
public string[] getColumnsName() { List<string> listacolumnas=new List<string>(); using (sqlConnection connection = new sqlConnection(Connection)) using (sqlCommand command = connection.CreateCommand()) { command.CommandText = "SELECT TOP 0 * FROM Usuarios"; connection.open(); using (var reader = command.ExecuteReader(CommandBehavior.KeyInfo)) { reader.Read(); var table = reader.GetSchemaTable(); foreach (DataColumn column in table.Columns) { listacolumnas.Add(column.ColumnName); } } } return listacolumnas.ToArray(); }
但这让我回到了以下
<string>ColumnName</string> <string>Columnordinal</string> <string>ColumnSize</string> <string>NumericPrecision</string> <string>NumericScale</string> <string>IsUnique</string> <string>IsKey</string> <string>BaseServerName</string> <string>BaseCatalogName</string> <string>BaseColumnName</string> <string>BaseSchemaName</string> <string>BaseTableName</string> <string>DataType</string> <string>Allowdbnull</string> <string>ProviderType</string> <string>IsAliased</string> <string>IsExpression</string> <string>IsIdentity</string> <string>IsAutoIncrement</string> <string>IsRowVersion</string> <string>IsHidden</string> <string>IsLong</string> <string>IsReadOnly</string> <string>ProviderSpecificDataType</string> <string>DataTypeName</string> <string>XmlSchemaCollectionDatabase</string> <string>XmlSchemaCollectioNowningSchema</string> <string>XmlSchemaCollectionName</string> <string>UdtAssemblyQualifiedname</string> <string>NonVersionedProviderType</string> <string>IsColumnSet</string>
有任何想法吗?
解决方法
您可以使用下面的查询来获取表的列名.下面的查询获取给定名称的用户表的所有列:
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'
在您的代码中,它看起来像这样:
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(); }
原文地址:https://www.jb51.cc/csharp/98759.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。