Как я могу получить имена таблиц от базы данных Access MS?

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

33
задан BIBD 26 October 2015 в 15:09
поделиться

4 ответа

Для построения на ответе Ilya пробуют следующий запрос:

SELECT MSysObjects.Name AS table_name
FROM MSysObjects
WHERE (((Left([Name],1))<>"~") 
        AND ((Left([Name],4))<>"MSys") 
        AND ((MSysObjects.Type) In (1,4,6)))
order by MSysObjects.Name 

(эти работы без модификации с MDB)

пользователи ACCDB, возможно, должны сделать что-то вроде этого

SELECT MSysObjects.Name AS table_name
FROM MSysObjects
WHERE (((Left([Name],1))<>"~") 
        AND ((Left([Name],4))<>"MSys") 
        AND ((MSysObjects.Type) In (1,4,6))
        AND ((MSysObjects.Flags)=0))
order by MSysObjects.Name 

, Поскольку существует дополнительная таблица, включен, который, кажется, какая-то системная таблица.

58
ответ дан 27 November 2019 в 17:52
поделиться

Можно использовать схемы в Доступе.

Sub ListAccessTables2(strDBPath)
   Dim cnnDB As ADODB.Connection
   Dim rstList As ADODB.Recordset

   Set cnnDB = New ADODB.Connection

   ' Open the connection.
   With cnnDB
      .Provider = "Microsoft.Jet.OLEDB.4.0"
      .Open strDBPath
   End With

   ' Open the tables schema rowset.
   Set rstList = cnnDB.OpenSchema(adSchemaTables)

   ' Loop through the results and print the
   ' names and types in the Immediate pane.
   With rstList
      Do While Not .EOF
         If .Fields("TABLE_TYPE") <> "VIEW" Then
            Debug.Print .Fields("TABLE_NAME") & vbTab & _
               .Fields("TABLE_TYPE")
         End If
         .MoveNext
      Loop
   End With
   cnnDB.Close
   Set cnnDB = Nothing
End Sub

От: http://msdn.microsoft.com/en-us/library/aa165325 (офис 10) .aspx

10
ответ дан 27 November 2019 в 17:52
поделиться

Информация о схеме, которая разработана, чтобы быть очень близко к информации SQL-92 INFORMATION_SCHEMA, может быть получена для механизма Струи/ACE (который является тем, что я предполагаю, что Вы подразумеваете под 'доступом') через провайдеры OLE DB.

См.:

Метод OpenSchema (ADO)

Поддерживаемые Наборы строк схемы

2
ответ дан 27 November 2019 в 17:52
поделиться

Получение списка таблиц:

SELECT 
    Table_Name = Name, 
FROM 
    MSysObjects 
WHERE 
    (Left([Name],1)<>"~") 
    AND (Left([Name],4) <> "MSys") 
    AND ([Type] In (1, 4, 6)) 
ORDER BY 
    Name
1
ответ дан 27 November 2019 в 17:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: