Récupérer les noms des tables

Signaler
Messages postés
345
Date d'inscription
jeudi 15 février 2007
Statut
Membre
Dernière intervention
24 avril 2010
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
 Bonjour, je souhaite savoir comment je peux récupérer les noms des tables de ma base de données et leurs champs avec du code bien sûr s'il existe, parce que j'ai trouvé une requête qui peut lister tous les tables.
Merci

12 réponses

Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
18
Salut


Cette question est plutôt une question SQL si je ne m'abuse. Le bon forum est donc www.sqlfr.com .

Tu y trouveras néanmoins des sources intéressantes sur le sujet :

- http://www.sqlfr.com/codes/SQL-SERVER-RECUPERER-TOUTES-TABLES-TOUS-CHAMPS-GRACE_26609.aspx

- http://www.sqlfr.com/codes/LISTE-BASES-TABLES-COLONNES-TRIES-TYPE-PROCEDURE-STOCKES_34071.aspx

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
18
Je viens de relire ta question et je ne comprends plus trop le sens, désolé.

Tu veux connaitre la requête ou le code C# qui appelle la requête ?

Dans ce dernier cas, tu trouveras beaucoup de code d'accès aux données et d'exécution de requête et cherchant un peu sur le site ^^

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
Messages postés
345
Date d'inscription
jeudi 15 février 2007
Statut
Membre
Dernière intervention
24 avril 2010

Oui je sais que c'est une requete "select * from sysobjects where xtype='U' " mais je veux les rrécupérer avec du code (des objets SQLClient)
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
18
Après un petite recherche, un lien qui peut t'être intéressant :

http://www.csharpfr.com/codes/DIVERS-CLASSES-POUR-UTILISER-MYSQL-ACCESS-SQL-SERVER_36034.aspx

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
Messages postés
148
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
1 décembre 2009

Bonjour, ça depend de la version d'Sql Server, pour sql 2000 ça doit être ça :



SELECT o.name, c.name
FROM dbo.syscolumns c
INNERJOIN dbo.sysobjects o
ON c.id = o.id
WHERE o.name = 'Le_nom_de_ta_Table'
ORDER BY c.colorder

Pour 2005 c'est ça :





SELECT






OBJECT_NAME
(
Object_ID
)



AS



'NomTable'
,



Name



AS



'NomColone'
,
Column_ID


FROM



sys.all_columns





ORDER



BY
NomTable

,
NomColone
Messages postés
345
Date d'inscription
jeudi 15 février 2007
Statut
Membre
Dernière intervention
24 avril 2010

Mon problème ce n'est pas la manipulation des requetes, voila un exemple avec du code qui permet de récupérer les tables access :
<li>using System.Data.OleDb; </li><li>using System.Data; </li><li>using System.Collections; </li><li></li><li>//</li><li>//Methodes de récupéraion des noms de Tables</li><li>//</li><li>public DataTable GetTables(OleDbConnection conn) </li><li>{ </li><li>conn.Open(); </li><li>DataTable schemaTable conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, </li><li>newobject[] {null, null, null, "TABLE"}); </li><li>conn.Close(); </li><li>return schemaTable; </li><li>} </li><li></li><li>privatevoid button1_Click(object sender, System.EventArgs e) </li><li>{ </li><li>string source "Provider=Microsoft.Jet.OLEDB.4.0;" + </li><li>"Data Source = cheminde_la_base_de_donnees"; </li><li>OleDbConnection conn = new OleDbConnection(source); </li><li>DataTable t = GetTables(conn); </li><li>tableCheckedListBox.DataSource = t; </li><li>tableCheckedListBox.DisplayMember = "TABLE_NAME"; </li><li>listBox1.DataSource = t; </li><li>listBox1.DisplayMember = "TABLE_NAME"; </li><li>}</li>
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
18
Pour t'aider un peu, un des méthodes :

Tu utilise le namespace System.Data.SqlClient;


Puis le code :


SqlConnection connection = new SqlConnection("ConnectionString");

try

{

connection.Open();


SqlCommand command = new SqlCommand("select * from sysobjects where xtype='U'");

SqlDataReader reader = command.ExecuteReader();



while (reader.Read())

{

string name = reader.GetString(0);//Index de la colonne

}

}

finally

{

connection.Close();

}

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
Messages postés
148
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
1 décembre 2009

Ah ben moi tout comme
billou_13
 j'ai pas trop bien compris ta question apparement ...
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
18
Okay, j'avais pas vu ton dernier post. Autant pour moi alors ^^. Je ne connais pas trop les bases Access (question d'éthique ^^)

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
Messages postés
345
Date d'inscription
jeudi 15 février 2007
Statut
Membre
Dernière intervention
24 avril 2010

C'est bon j'ai pu récupérer les noms des tables mais je récupère aussi les diagrammes(schéma de la base).
Messages postés
345
Date d'inscription
jeudi 15 février 2007
Statut
Membre
Dernière intervention
24 avril 2010

J'ai voulu récupérer les champs d'une table, j'ai écrit cette requete mais elle ne retourne rien :

string requete1 = "SELECT COLUMN_NAME, ORDINAL_POSITION FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='PROFILE'";
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
85
Salut,

N'oublie pas que ces vues donnent des résultats pour la base courante, donc assure toi que c'est la bonne.

/*
coq
MVP Visual C#
CoqBlog
*/