Lister les tables d'une base de données

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

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.