Rubrik: Datenbanken · ADO.NET Allgemein | VB-Versionen: VB.NET | 21.04.08 |
![]() Dieses Beispiel zeigt, wie sich mittels ADO.NET und Verwendung der OleDb-Klasse alle Tabellen einer Access-Datenbank ermitteln lassen. | ||
Autor: ![]() | Bewertung: ![]() ![]() ![]() ![]() ![]() | Views: 29.651 |
https://www.tools4vb.com | System: WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | ![]() |
Unser heutiger Tipp zeigt, wie Sie unter Verwendung von ADO.NET und der System.Data.OleDb-Klasse alle Tabellen einer Access-Datenbank ermitteln können. Die Funktion ReadAllMDBTables gibt die Tabellennamen hierbei als ArrayList-Objekt zurück. Optional lässt sich noch festlegen, ob neben den "normalen" Access-Tabellen auch die System-Tabellen ermittelt und zurückgegeben werden sollen.
Für das Beispiel müssen Sie zunächst den Namespace "System.Data.OleDb" importieren:
Imports System.Data.OleDb
Hier die Funktion, mit der die in einer Access-Datenbank enthaltenen Tabellen ermittelt werden:
''' <summary> ''' Ermittelt alle in einer Access-Datenbank vorhandenen Tabellen ''' und gibt diese als ArrayList-Objekt zurück ''' </summary> ''' <param name="sMDBFile">Pfad zur Access-Datenbank</param> ''' <param name="bSkipSystemTables">False, wenn auch Access-Systemtabellen ''' zurückgegeben werden sollen</param> Public Function ReadAllMDBTables(ByVal sMDBFile As String, _ Optional ByVal bSkipSystemTables As Boolean = True) As ArrayList Dim oTables As New ArrayList Dim oConn As System.Data.OleDb.OleDbConnection = Nothing ' Fehlerbehandlung aktivieren Try ' Connection-String zusammenstellen Dim sConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & sMDBFile ' Connection zur Access-DB herstellen oConn = New System.Data.OleDb.OleDbConnection(sConn) oConn.Open() ' DB-Schema über alle Tabellen Dim oTable As DataTable = oConn.GetSchema("Tables") For Each oRow As DataRow In oTable.Rows If Not bSkipSystemTables OrElse oRow("TABLE_TYPE") = "TABLE" Then ' Falls es sich um eine "normale" Tabelle handelt ' oder auch System-Tabellen zurückgegeben werden sollen, ' Tabellenname jetzt dem ArrayList hinzufügen oTables.Add(oRow("TABLE_NAME").ToString) End If Next Catch ex As Exception ' Bei Fehler, Hinweis anzeigen MsgBox("Fehler beim Ermitteln der Access-Tabellen!" & vbCrLf & _ ex.Message, MsgBoxStyle.Exclamation) Finally ' Connection schließen If oConn IsNot Nothing Then oConn.Close() End Try Return oTables End Function
Beispiel für den Aufruf:
Es sollen alle Access-Tabellen ermittelt und in einem ListBox-Control angezeigt werden:
Dim sMDBFile As String = "d:\Access.mdb" With ListBox1.Items ' ListBox-Inhalt löschen .Clear() ' alle Tabellen ermitteln (auch System-Tabellen) Dim oTableList As ArrayList = ReadAllMDBTables(sMDBFile, False) If oTableList.Count > 0 Then For Each oItem As String In oTableList .Add(oItem) Next End If End With