Récupérer le nom de la colonne en C #

Je cherchais SO sur la façon de récupérer le nom de la colonne et j'ai essayé quelques solutions, mais quand j'utilise cette méthode, par exemple, je reçois ces noms de colonnes et non mes noms de colonnes (ID, Status, Title etc.):

  • TABLE_CATALOG
  • TABLE_SCHEMA
  • NOM DE LA TABLE
  • TABLE_TYPE

    using (SqlConnection connection = new SqlConnection(this.ConnectionSsortingng)) { System.Data.SqlClient.SqlConnectionSsortingngBuilder builder = new System.Data.SqlClient.SqlConnectionSsortingngBuilder(); builder.ConnectionSsortingng = this.ConnectionSsortingng; ssortingng server = builder.DataSource; ssortingng database = builder.InitialCatalog; connection.Open(); DataTable schema = connection.GetSchema("Tables"); Tables = new List<Table>(); foreach (DataRow row in schema.Rows) { /* Add Table */ Table t = new Table(); ssortingng tableName = row[2].ToSsortingng(); t.Name = tableName; /* Add columns */ //DataTable dtCols = connection.GetSchema("Columns", new[] { "StarTrackerDB", null, "dbo.Tickets" }); t.Columns = new List<Column>(); foreach (DataColumn column in row.Table.Columns) { Column c = new Column(); c.Name = column.ColumnName; t.Columns.Add(c); } Tables.Add(t); } } 

MODIFIER:

Je veux le récupérer en C # ie ne pas exécuter une string de requête SQL dans mon code.

EDIT2

Sortie actuelle:

  • TABLE_CATALOG
  • TABLE_SCHEMA
  • NOM DE LA TABLE
  • TABLE_TYPE

Production attendue:

  • ID
  • Statut
  • Titre

etc. les noms des colonnes dans les arrays. la ssortingng tableName est définie correctement.

J'ai édité votre code et j'ai pu get les tables et les colonnes avec le code ci-dessous.

  public void testeStackOverflow() { using (SqlConnection connection = new SqlConnection(this.ConnectionSsortingng)) { System.Data.SqlClient.SqlConnectionSsortingngBuilder builder = new System.Data.SqlClient.SqlConnectionSsortingngBuilder(); builder.ConnectionSsortingng = this.ConnectionSsortingng; ssortingng server = builder.DataSource; ssortingng database = builder.InitialCatalog; connection.Open(); DataTable schemaTables = connection.GetSchema("Tables"); foreach (System.Data.DataRow rowTable in schemaTables.Rows) { Ssortingng TableName = rowTable.ItemArray[2].ToSsortingng(); ssortingng[] ressortingctionsColumns = new ssortingng[4]; ressortingctionsColumns[2] = TableName; DataTable schemaColumns = connection.GetSchema("Columns", ressortingctionsColumns); foreach (System.Data.DataRow rowColumn in schemaColumns.Rows) { ssortingng ColumnName = rowColumn[3].ToSsortingng(); } } } } 

Obtenir des informations sur le schéma de toutes les colonnes de la database en cours

 DataTable allColumnsSchemaTable = connection.GetSchema("Columns"); 

Vous pouvez spécifier le catalogue, le schéma, le nom de la table et le nom de la colonne pour get les colonnes spécifiées. Vous pouvez utiliser quatre ressortingctions pour Column, vous devez donc créer un tableau à 4 membres. Pour le tableau, 0-member représente Catalog; 1 membre représente le schéma; 2 membres représentent le nom de la table; 3 membres représente le nom de la colonne.

par exemple get des colonnes pour la table MyTable:

 Ssortingng[] columnRessortingctions = new Ssortingng[4]; columnRessortingctions[2] = "MyTable"; DataTable myTableSchemaTable = connection.GetSchema("Columns", columnRessortingctions); 

Pour get datatables de ces tables:

 var columnDetails = from info in table.AsEnumerable() select new { TableCatalog = info["TABLE_CATALOG"], TableSchema = info["TABLE_SCHEMA"], TableName = info["TABLE_NAME"], ColumnName = info["COLUMN_NAME"], DataType = info["DATA_TYPE"] }; 

Obtenir des informations sur le schéma de tous les IndexColumns dans la database en cours

 DataTable allIndexColumnsSchemaTable = connection.GetSchema("IndexColumns"); 

Vous pouvez spécifier le catalogue, le schéma, le nom de la table, le nom de la contrainte, le nom de la colonne pour get la (les) colonne (s) spécifiée (s). Vous pouvez utiliser cinq ressortingctions pour Column, vous devez donc créer un tableau de 5 membres. Pour le tableau, 0-member représente Catalog; 1 membre représente le schéma; 2 membres représentent le nom de la table; 3 membres représentent le nom de contrainte; 4 membres représente le nom de la colonne.

 Ssortingng[] indexColumnsRessortingctions = new Ssortingng[5]; indexColumnsRessortingctions[2] = "Course"; indexColumnsRessortingctions[4] = "CourseID"; DataTable courseIdIndexSchemaTable = connection.GetSchema("IndexColumns", indexColumnsRessortingctions); 

Pour get datatables de ces tables:

 var columnDetails = from info in indexColumnsTable.AsEnumerable() select new { TableSchema = info["table_schema"], TableName = info["table_name"], ColumnName = info["column_name"], ConstraintSchema = info["constraint_schema"], ConstraintName = info["constraint_name"], KeyType = info["KeyType"] };