This code was downloaded from MOBZystems, Home of Tools. No license, use at will. And at your own risk!
''' <summary> ''' DbSchemaInfo. Read schema information from OleDbConnection objects ''' </summary> Public Class DbSchemaInfo ''' <summary> ''' DbSchemaTableInfo. Contains information about a table, ''' i.e. a table name and a list of column names ''' </summary> Public Class DbSchemaTableInfo ''' <summary> ''' The name of this table ''' </summary> Public TableName As String ''' <summary> ''' The column names of this table ''' </summary> Public ColumnNames() As String ''' <summary> ''' Fill this DbSchemaTableInfo with information ''' about the specified table using the specified ''' OleDbConnection ''' </summary> Public Sub New(ByVal Connection As OleDb.OleDbConnection, ByVal TableName As String) Me.TableName = TableName ' Get schema information about the columns of this table Dim ColumnDataTable As DataTable = Connection.GetSchema( _ OleDb.OleDbMetaDataCollectionNames.Columns, _ New String() {Nothing, Nothing, TableName, Nothing} _ ) ' Declare the Tables array to size ReDim ColumnNames(0 To ColumnDataTable.Rows.Count - 1) ' Set column names for each column For Row As Integer = 0 To ColumnDataTable.Rows.Count - 1 Dim ColumnName As String = CStr(ColumnDataTable.Rows(Row).Item("COLUMN_NAME")) ColumnNames(Row) = ColumnName Next End Sub End Class ''' <summary> ''' The list of tables associated with the connection ''' </summary> Public Tables() As DbSchemaTableInfo ''' <summary> ''' Create a DbSchemaInfo object with information from an OleDbonnection ''' </summary> Public Sub New(ByVal Connection As OleDb.OleDbConnection) FillFromConnection(Connection) End Sub ''' <summary> ''' Create a DbSchemaInfo object with information from ''' a connection string for an OleDbonnection ''' </summary> Public Sub New(ByVal ConnectionString As String) Using Connection As New OleDb.OleDbConnection(ConnectionString) Connection.Open() FillFromConnection(Connection) Connection.Close() End Using End Sub ''' <summary> ''' Fill the information in this object from the specified connection ''' </summary> ''' <param name="Connection"></param> Public Sub FillFromConnection(ByVal Connection As OleDb.OleDbConnection) ' Get the data table containing table information Dim TableDataTable As DataTable = Connection.GetSchema( _ OleDb.OleDbMetaDataCollectionNames.Tables, _ New String() {Nothing, Nothing, Nothing, "Table"} _ ) ' Declare the Tables array to size ReDim Tables(0 To TableDataTable.Rows.Count - 1) ' Create a DbSchemaTableInfo for each table For Row As Integer = 0 To TableDataTable.Rows.Count - 1 ' Get the table name Dim TableName As String = CStr(TableDataTable.Rows(Row).Item("TABLE_NAME")) ' Get the schema information for this table Tables(Row) = New DbSchemaTableInfo(Connection, TableName) Next End Sub End Class