Overblog Suivre ce blog
Editer l'article Administration Créer mon blog
26 septembre 2007 3 26 /09 /septembre /2007 19:04

Il existe biensur plusieurs façons de procéder mais j'affectionne particulièrement celle-ci.

 

Code :

Public ds as New Dataset

Public Sub FillDataset()

GetDatabaseSchema()
        For Each dt As DataTable In ds.Tables
            FillTable(dt)
       Next

End Sub

Public Sub GetDatabaseSchema()
        Dim dtTableName As New DataTable("Tables")

        Using con As New SqlConnection(My.Settings.dbHcProspectionConnectionString)
            Dim Command As New SqlCommand
            Command = con.CreateCommand
            Command.CommandText = "select table_name as Name from INFORMATION_SCHEMA.Tables where TABLE_TYPE ='BASE TABLE'"

            con.Open()

           'on charge dans une datatable la liste des tables de la base de donnée

            dtTableName.Load(Command.ExecuteReader(CommandBehavior.CloseConnection))

            Dim tableName As String = Nothing

       'on récupère le schema de chaque table  

        For Each row As DataRow In dtTableName.Rows
                tableName = row("Name").ToString
                Using da As New SqlDataAdapter("SELECT * FROM " & tableName, con)
                    da.FillSchema(ds, SchemaType.Source, tableName)
                End Using
            Next
            con.Close()
        End Using
End Sub

Public Sub FillTable(ByVal dt As DataTable)
        Using con As New SqlConnection(My.Settings.dbHcProspectionConnectionString)
            Using da As New SqlDataAdapter("SELECT * FROM " & dt.TableName, con)
                da.Fill(ds, dt.TableName)
            End Using
        End Using
End Sub

Il ne vous reste plus qu'à appeller la méthode FillDataset pour charger les données ou GetDatabaseSchema pour ne charger que le schema de la base de données dans le dataset.

Partager cet article

Repost 0
Published by Cyril - dans VB.NET
commenter cet article

commentaires