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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <engiNOSPAM@free.fr> a écrit dans le message de
news:40a3e619$0$27679$636a15ce@news.free.fr...
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
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
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 *************************
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 *************************
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 *************************