2016-05-25 2 views
0

abzurufen Immer, wenn ich Tabellen Namen von bestimmten MS Access 2007-Datenbank auswählen möchten, verwende ich diese SQL-Anfrage:Wie MS Access-Tabellen Namen von bestimmten Datenbank mit SQL in VB.NET

SELECT name from msysobjects WHERE type=1 and flags=0 

Meine VB.NET Quellcode:

Connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + _ 
        "Data Source=" & Text1.Text 
     Connection.Open() 
     ' sql = "SELECT MSysObjects.Name AS table_name FROM MSysObjects" 
     sql = "SELECT name from msysobjects WHERE Type = 1 And flags = 0" 
     Dim commande As OleDbCommand 
     commande = New OleDbCommand(sql, Connection) 
     Dim dataReader As OleDbDataReader 

     Try 
      dataReader = commande.ExecuteReader() 
      While (dataReader.Read()) 
       tableNameBox.Text = dataReader.GetString(0) 
      End While 

     Catch ex As Exception 
      MsgBox("Problème de connection " & ex.Message()) 

     End Try 

ich diese Ausnahme immer erhalten:

keine Leseberechtigung auf 'MSysObjects'

Mein Ziel ist Tabellen-Namen in comboBox Danke

+2

sehen Wenn Sie eine neue Frage haben, bitte stelle es als [neue Frage] (http://stackoverflow.com/questions/ask). Ändern Sie diese Einstellung nicht, nachdem Sie eine sinnvolle gültige Antwort erhalten haben. Danke für Ihre Kooperation. – HansUp

Antwort

2

Sie zeigen nicht die Systemtabellen direkt zugreifen müssen. Sie können die Methode GetSchema verwenden, um diese Informationen abzurufen. Um zum Beispiel eine Liste der „normalen“ (Nicht-System) Tabellen abrufen Sie diese verwenden können:

Using conn As New OleDbConnection(myConnectionString) 
    conn.Open() 
    Dim dt As DataTable = conn.GetSchema("TABLES", {Nothing, Nothing, Nothing, "TABLE"}) 
    For Each dr As DataRow In dt.Rows 
     Console.WriteLine(dr("TABLE_NAME")) 
    Next 
End Using 

Weitere Informationen

OleDbConnection.GetSchema Method (String, String())

+0

Hallo Gord Thompson, danke für deine Antwort. Ich möchte dir wirklich mitteilen, dass ich meinen Beitrag bearbeitet habe. Vielen Dank. Freundliche Grüße – Rodrigo

Verwandte Themen