Lister les tables d'une base de données

Soyez le premier à donner votre avis sur cette source.

Snippet vu 44 088 fois - Téléchargée 29 fois

Contenu du snippet

Ce code très simple permet de lister les tables d'une base de données (ici Access). C'est simplement adapté de la doc MDSN de Visual Studio !

On pourra ensuite choisir d'afficher le contenu d'une table quelconque d'une base en la sélectionnant dans une DropDownList, mais je ne l'écrirai que si ça intéressait qqn !

Source / Exemple :


1. Il faut 	voir une section html dans le <body>, du genre :

<form id="Form1" method="post" runat="server">

<asp:Label id="LbInfo" runat="server" Width="100%">info:</asp:Label>
<asp:DataGrid id="TablesGrid"  runat="server" Width="100%"></asp:DataGrid>

<%-- et pour l'affichage de la table sélectionnée : --%>
<asp:DropDownList ID="ddlTables" runat="server" AutoPostBack="true"    ></asp:DropDownList>
<asp:DataGrid id="TGrid" runat="server" Width="100%"></asp:DataGrid>

</form>

2. Ensuite le code:

'en haut :
 Imports System.Data.OleDb

    Dim Chem As String      'Chemin conduisant à la base
    Dim ConnString As String
    Dim Conn As OleDbConnection
   
    Dim Latable As String
'===================================================
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Chem = ConfigurationSettings.AppSettings("chem") 'chemin enregistré dans le "Web.config" avec ce genre de chose :
'<appSettings>
'<add key="chem" value="//MonSite/BDD/MaBase.mdb"/>
'</appSettings>

        ConnString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath(Chem)	' pour une base access
        Conn = New OleDbConnection(ConnString)

        If Not IsPostBack Then

   '-------Lister les tables du datatable--
            Dim h As Integer
            For h = 0 To GetTables(Conn).Rows.Count - 1
       
      'écriture de la listre des tables
                LbInfo.Text &= GetTables(Conn).Rows(h).Item(2) & "<br>" ' l'indice 2 est l'indice de la colonne "table_name" voir le datagrid en dessous ( 3e colonne)

       'remplissage de la ddlTables
                ddlTables.Items.Add(GetTables(Conn).Rows(h).Item(2))

            Next
    '------affiche le datatable dans un datagrid--
            TablesGrid.DataSource = GetTables(Conn)
            TablesGrid.DataBind()

    '--affiche la table sélectionnée dans un datagrid (TGrid)
            Latable = ddlTables.SelectedValue
            ChargerData(Latable)

        End If
    End Sub
    '==================================================
    'Cette fonction renvoie un DataTable contenant tout sur les tables de la base liée avec la connection "Conn"

    Public Function GetTables(ByVal conn As OleDbConnection) As DataTable
        conn.Open()
        Dim schemaTable As DataTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, New Object() {Nothing,_ Nothing, Nothing, "TABLE"})  'Pour les requêtes, on mettra "VIEW"
        conn.Close()
        Return schemaTable
    End Function
    '==================================================
    'Recharge le dataGrid "Tgrid" lors d'une sélection

    Private Sub ddlTables_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ddlTables.SelectedIndexChanged

        Latable = ddlTables.SelectedValue
        ChargerData(Latable)

    End Sub
    '===========================================

    Sub ChargerData(ByVal table As String)

        SelectSql = "SELECT * FROM [" & table & "]"
        Commande = New OleDbCommand(SelectSql, Conn)
        Conn.Open()
        TGrid.DataSource = Commande.ExecuteReader()
        TGrid.DataBind()
        conn.close()

    End Sub

Conclusion :


La dropDownlist permettant de consulter la table a été ajoutée. Si qqn veut écrire le changement de code pour une base SQL, je suis tout ouï !

A voir également

Ajouter un commentaire

Commentaires

mthony2002
Messages postés
3
Date d'inscription
dimanche 18 juillet 2004
Statut
Membre
Dernière intervention
4 juin 2005
-
mais je voudrais aussi qu'il envoie le contenu d'une table
mthony2002
Messages postés
3
Date d'inscription
dimanche 18 juillet 2004
Statut
Membre
Dernière intervention
4 juin 2005
-
c'est vraiment bon, j'aimerais l'avoir pour une BD SQLserveur 2000
cs_arcollet
Messages postés
31
Date d'inscription
jeudi 12 juin 2003
Statut
Membre
Dernière intervention
13 avril 2008
-
"mais je ne l'écrirai que si ça intéressait qqn !"

pour s'arrêter en si bon chemin ?

Denis

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.