OVH Cloud OVH Cloud

Liste des champs d'une table

2 réponses
Avatar
Engi
bonjour,

comment récupérer la liste des champs d'une table ?
plus précisément, comment savoir si tel ou tel champ existe bien dans une
table
et comment le créer s'il n'existe pas ?
merci de votre aide

2 réponses

Avatar
cui
Avec par exemple ADO.NET, tu peux récuperer le catalogue de la base de
donnée (ou appelée également schema) et tu connaitras tout sur la base et
ses colonnes....

Voici 1 petit code écrit en vb.net et ado.net pour retrouver la définition
de la table

Try

Dim cnn As New OleDb.OleDbConnection

cnn.ConnectionString = sd.connectionString

cnn.Open()

Dim schemaTable As DataTable cnn.GetOleDbSchemaTable(OleDb.OleDbSchemaGuid.Tables, _

New Object() {Nothing, Nothing, Nothing, "TABLE"})

Dim rTable, rField As DataRow

mTables = ""

Dim cmd As OleDb.OleDbCommand

Dim dbFields As Data.DataTable

If schemaTable.Rows.Count > 0 Then

For Each rTable In schemaTable.Rows

nomTable = rTable("TABLE_NAME")

descTable = rTable("DESCRIPTION")

'Récuperation des colonnes

dbFields = cnn.GetOleDbSchemaTable(OleDb.OleDbSchemaGuid.Columns, New
Object() {Nothing, Nothing, rTable("TABLE_NAME"), Nothing})

For Each rField In dbFields.Rows

colname = rField("COLUMN_NAME")

Next

Next

Else

mTables = "ERREUR : pas de table défini"

End If

' Libération des ressources

cnn.Close()

cnn = Nothing

cmd = Nothing

Catch ex As OleDb.OleDbException

'Traitement exception

End Try

Voila, je te laisse adapter pour la création des tables. Note que j'ai
utilisé le OLEDBConnection, comme ça, ça marche sur avec Access, Excel et
Sql Server.

Si tu ne voulais pas passer par de la programmation, alors dans la table
sysobjects de ta base, tu as le nom tes objets (tables, procédures
stockées....) et dans la table syscolumns de ta base, tu as toute les
colonnes, donc avec 1 simple select et exist, tu sais si ta colonne existe,
et pour modifier la table, t'utilises la commande SQL "ALTER TABLE", ex:
ALTER TABLE MA_TABLE_TO_MODIFY ADD COLUMN MA_NOUVELLE_COL CHAR(11) NOT NULL.
Tu peux toujours mettre ça dans 1 procédure stockée. Pense aux droits sur la
table...

En espérant t'aider, cordialement.

Cui.


"Engi" a écrit dans le message de
news:40a3e619$0$27679$
bonjour,

comment récupérer la liste des champs d'une table ?
plus précisément, comment savoir si tel ou tel champ existe bien dans une
table
et comment le créer s'il n'existe pas ?
merci de votre aide




Avatar
Fred BROUARD
Une table n'a pas de champ.... elle a des colonnes !
A lire :
http://sqlpro.developpez.com/SQL_AZ_E.html#ChampEnregistrement

Pour la liste des colonnes :
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = ...

A lire :
http://sqlpro.developpez.com/SQL_AZ_7b.html#SCHEMA9

A +

Engi a écrit:
bonjour,

comment récupérer la liste des champs d'une table ?
plus précisément, comment savoir si tel ou tel champ existe bien dans une
table
et comment le créer s'il n'existe pas ?
merci de votre aide





--
Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************