Overblog Suivre ce blog
Editer l'article Administration Créer mon blog

Présentation

  • : Romagny13 - Du .NET,du pur .NET
  • Romagny13 - Du .NET,du pur .NET
  • : Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions
  • Contact

Recherche

Articles Récents

2 février 2014 7 02 /02 /février /2014 01:33

Récupérer les infos de base -SQL ServerCe – ce qui marche

 

 On peut facilement récupérer la liste des tables,des colonnes,pour les clés étrangères c’est un peu plus compliqué .  

 J’utilise les mêmes vues qu’avec Sql Server mais toutes ne sont pas disponibles .  

 http://msdn.microsoft.com/fr-fr/library/ms186778.aspx  

-- liste les tables

select TABLE_NAME,TABLE_TYPE from INFORMATION_SCHEMA.TABLES

 

-- informations de colonne

select TABLE_NAME,COLUMN_NAME,ORDINAL_POSITION,COLUMN_HASDEFAULT,

COLUMN_DEFAULT,IS_NULLABLE,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,AUTOINC_SEED

from INFORMATION_SCHEMA.COLUMNS

where TABLE_NAME='Client'

 

 

select CONSTRAINT_NAME,TABLE_NAME,COLUMN_NAME

from INFORMATION_SCHEMA.KEY_COLUMN_USAGE

 

select CONSTRAINT_TABLE_NAME,CONSTRAINT_NAME,

UNIQUE_CONSTRAINT_TABLE_NAME,UNIQUE_CONSTRAINT_NAME

from INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS

 

-- CONSTRAINT_TYPE renvoie "FOREIGN KEY" ou "PRIMARY KEY"

select CONSTRAINT_NAME,TABLE_NAME,CONSTRAINT_TYPE

from INFORMATION_SCHEMA.TABLE_CONSTRAINTS

 

Clé étrangères  

select CONSTRAINT_TABLE_NAME as TABLE_FILLE,

CONSTRAINT_NAME as FK_NAME

,UNIQUE_CONSTRAINT_TABLE_NAME as TABLE_MERE,UNIQUE_CONSTRAINT_NAME as PK_NAME

from INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS;

 

select COLUMN_NAME as CLE_ETRANGERE

from INFORMATION_SCHEMA.KEY_COLUMN_USAGE

Where CONSTRAINT_NAME ='FK_Client_Category' ;

 

 

select COLUMN_NAME as CLE_TABLE_MERE from INFORMATION_SCHEMA.KEY_COLUMN_USAGE

Where CONSTRAINT_NAME ='PK_Category'

  

Et voilà on récupère toutes les informations de clé étrangères en une seule requête  

select a.CONSTRAINT_TABLE_NAME as TABLE_FILLE,

a.CONSTRAINT_NAME as FK_NAME

,a.UNIQUE_CONSTRAINT_TABLE_NAME as TABLE_MERE,a.UNIQUE_CONSTRAINT_NAME as PK_NAME,b.COLUMN_NAME as CLE_ETRANGERE,

b.CONSTRAINT_NAME,c.COLUMN_NAME as CLE_TABLE_MERE

from INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS as a

,INFORMATION_SCHEMA.KEY_COLUMN_USAGE as b,

INFORMATION_SCHEMA.KEY_COLUMN_USAGE as c

where b.CONSTRAINT_NAME=a.CONSTRAINT_NAME

and c.CONSTRAINT_NAME=a.UNIQUE_CONSTRAINT_NAME          

 

Autrement il est possible de passer par DbConnection .GetSchema()

 

(Très efficace pour récupérer les informations des bases Microsoft Acces , cela liste même les vues avec le corps .Beaucoup moins avec SqlServerCe qui reste assez compliqué à utiliser )

Partager cet article

Repost 0
Published by Romagny13 - dans SQL
commenter cet article

commentaires