Получение имен таблиц всех таблиц в конкретной базе данных в MS SQL Server с использованием Java

Я пытаюсь получить имена всех таблиц в базе данных с использованием Java.

Это метод, который я использую. Однако при запуске он также отображает другие таблицы, которые на самом деле не являются частью моей базы данных, или, может быть, некоторые системные таблицы, которые меня не интересуют. Как я могу получить только таблицы, которые я создал?

/* connecting to database using supplied credentials, and printing out the SQL queries for inserting data to local db */ public void connectToAzure(String connectionString, String databaseName, String username, String password) throws ClassNotFoundException, SQLException { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); final Connection m_Connection = DriverManager.getConnection( connectionString+";DatabaseName="+databaseName, username, password ); final ArrayList<String> tables = getTableNames(m_Connection); } /* helper method to get table names */ public ArrayList<String> getTableNames(final Connection m_Connection) { final ArrayList<String> tables = new ArrayList<>(); try { DatabaseMetaData dbmd = m_Connection.getMetaData(); String[] types = {"TABLE"}; ResultSet rs = dbmd.getTables(null, null, "%", types); while (rs.next()) { String tableName = rs.getString("TABLE_NAME"); tables.add( tableName ); } } catch (SQLException e) { e.printStackTrace(); } return tables; } 

Вывод при запуске выше

 table1, table2, table3, table4, table5, table6, trace_xe_action_map, trace_xe_event_map 

Из этих,

 trace_xe_action_map, trace_xe_event_map 

не являются таблицами, которые я создал.

Возможно, вы захотите запустить простой запрос select в базе данных следующим образом:

 select TABLE_NAME from INFORMATION_SCHEMA.TABLES; 

Вы можете дополнительно отфильтровать table_names, используя такие клаузулы:

 SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_CATALOG = ? AND TABLE_SCHEMA = ?; 

Из документа API Java API

 ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) throws SQLException 

Поскольку вам нужны только результаты из базы данных, попробуйте предоставить «schemaPattern», например:

 ResultSet rs = dbmd.getTables(null, 'your-database', "%", types); 

И вы получаете то, что хотите, не больше, не меньше.

Я ничего не знаю о Java, но вы можете использовать SQL для этого.

 USE your_DB GO SELECT t.name AS table_name, SCHEMA_NAME(schema_id) AS schema_name, c.name AS column_name FROM sys.tables AS t INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID WHERE c.name LIKE '%ticker%' ORDER BY schema_name, table_name; 

ИЛИ

 select * from information_schema.columns where table_schema = 'your_DB' order by table_name,ordinal_position 
  • Драйвер JDBC отправляет Timestamp как datetime2, вызывая,
  • Получить план запроса с помощью jdbc PreparedStatement на сервере sql
  • Получение возвращаемого значения из JDBC MSSQL
  • ClassNotFoundException при попытке подключения к SQL Server 2005 с Java
  • Подключение к microsoft sql 2008 r2 из java 8
  • Glassfish / Toplink и sqljdbc.jar повторяются навсегда при сломанном db-соединении
  • JDBC SQLServerException Параметр не определен
  • JDBC, INSERT MULTIPLE записи, полученные из запроса, в другую таблицу
  • подключить идею intellij к базе данных SQL Server
  • Подключение к SQL Server с проверкой подлинности Windows с Linux-машины через JDBC
  • Подключение к SQL Server 2005 Express с Java
  • Interesting Posts

    SQL: объединение строк вместе

    В Visual Studio 2013 я просто хочу передать данные в таблицу sql с помощью VB?

    Проверка параметров в Transact-SQL (SQL Server 2008): синтаксическая ошибка IF / OR / raiserror

    Возможно ли получить доступ к SQL Server Service Broker из приложения C #?

    Перекрытие дат в SQL

    SQL Server 2005: индекс больше, чем хранятся данные

    Каково странное поведение с SELECT COUNT (отличным CLIEND_ID) Из таблицы clients_data?

    T-SQL для извлечения данных истории из таблицы / log_table по RelevanceDate

    SQL Server: удалить некоторые данные из столбца

    Составное кластеризованное поведение ПК по сравнению с некластеризованным индексом кластеризации ПК +

    SQL, отказывающийся от соединения при загрузке

    SQL Server: выберите Top 0?

    Попытка выполнить иерархическое обновление приводит к ошибке «Значение внешнего ключа не может быть вставлено»

    Как изменить имя схемы и переместить таблицу в другую схему?

    Как я могу запросить настройки сервера по умолчанию для ARITHABORT, ANSI WARNINGS и ARITHIGNORE?

    Давайте будем гением компьютера.