Jak wykryć, czy pewna tabela istnieje w danej bazie danych SQL w Javie?Jak mogę wykryć istnienie tabeli SQL w Javie?
Odpowiedz
Możesz użyć DatabaseMetaData.getTables(), aby uzyskać informacje o istniejących tabelach.
Ta metoda działa transparentnie i jest niezależna od silnika bazy danych. Wydaje mi się, że pyta o tabele schematów informacyjnych za kulisami.
Edit:
Oto an example that prints all existing table names.
DatabaseMetaData md = connection.getMetaData();
ResultSet rs = md.getTables(null, null, "%", null);
while (rs.next()) {
System.out.println(rs.getString(3));
}
Dzięki, to jest idealne. –
Ten przykład nie działa dla mnie. Zobacz - http://stackoverflow.com/questions/11699023/program-runs-without-exception-but-shows-no-table-names –
To nie jest specyficzny dla danego języka, ale problem związany z bazą danych. Zapytałbyś metadane w bazie danych o istnienie tego konkretnego obiektu.
W SQL Server, na przykład:
SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[table]')
AND type in (N'U')
napisać kwerendę, która wysyła zapytanie do tabeli/widoku, który wyświetla listę tabel (jest różna w zależności od producenta DB). Zadzwoń do tego z Javy.
Googling information_schema.tables bardzo pomoże.
zależności od DB, można to zrobić (MySQL)
SHOW TABLES
lub (Oracle)
SELECT * FROM user_objects WHERE object_type = 'TABLE'
lub inną rzeczą dla SQL Server. Przejrzyj wyniki dla MySQL lub dalszego filtra na Oracle.
Dlaczego nie zobaczyć, czy jest w sysobjects (dla SQL Server)?
Jest to funkcja, sprzedawca JDBC bazy danych niezależnych - patrz [java.sql.DatabaseMetaData # getTables()] [1]
można uzyskać instancję DatabaseMetaData wywołując java.sql.Connection#getMetaData()
[ 1]: http://java.sun.com/javase/6/docs/api/java/sql/DatabaseMetaData.html#getTables(java.lang.String, java.lang.String, java.lang.String, java.lang.String [])
Użyj java.sql.DatabaseMetaData.getTables(null, null, YOUR_TABLE, null)
. Jeśli tabela istnieje, dostaniesz ResultSet
z jednym rekordem.
Zobacz DatabaseMetaData.getTables
dla MS Access:
Select Count(*) From MSysObjects
Where type=1 And name='your_table_name_here'
dla wszystkich baz danych zgodnych z ANSI: (MySQL, SQL Server 2005/2008, Oracle, PostgreSQL, SQLLite, może inni)
select 1 from information_schema.tables where table_name = @tableName
Próbuję zrobić to przeciwko RDS Amazon (z systemem MySql), a rozwiązania tutaj opublikowane nie działają. Wszystko po prostu zwraca pusty ResultSet.
Jedyne co udało mi się dostać do pracy jest:
Connection connection = DriverManager.getConnection(DatabaseUrl, DatabaseUserName, DatabasePassword);
PreparedStatement s = connection.prepareStatement("use mySampleDatabase;");
s.execute();
PreparedStatement s2 = connection.prepareStatement("Show Tables;");
ResultSet rs = s2.executeQuery();
while (rs.next()) {
System.out.println(rs.getString(1));
}
Nie jestem pewien, czy problemy z innymi rozwiązaniami w tym wątku są unikalne dla RDS czy jest to coś, o JDBC umyka mi.
- 1. Jak przetestować istnienie obiektu w Firebird SQL?
- 2. Jak sprawdzić istnienie tabeli z innego sql dbl?
- 3. Sprawdź istnienie tabeli w slick 3.0
- 4. Jak mogę sprawdzić istnienie funkcji w Dart?
- 5. W jaki sposób można modyfikować tabele istnienie w tabeli tymczasowej SQL, zachowując dane?
- 6. Jak sprawdzić istnienie DB?
- 7. Jak mogę wykryć klawisz shift + w javascript?
- 8. Jak zmierzyć rozmiar tabeli w GB w tabeli w SQL
- 9. Jak sprawdzić istnienie obiektu serwera sql i go usunąć?
- 10. Sprawdź istnienie HashMap kluczy
- 11. Ucieczki SQL Ciągi w Javie
- 12. Jak przetestować istnienie zmiennej w środowisku funkcji?
- 13. Jak sprawdzić istnienie parametru get w kolbie
- 14. Jak sprawdzić istnienie programu w ścieżce
- 15. Jak mogę przetestować istnienie UIView przy użyciu XCUIElementsQuery?
- 16. Jak włączyć logowanie tabeli SQL w mysql
- 17. Czy mogę uzyskać pozycję rekordu w tabeli wyników SQL?
- 18. Jak mogę rozwinąć argumenty w Javie?
- 19. Jak mogę przechodzić przez wyliczenie w Javie?
- 20. Jak mogę posortować klucze mapy w Javie?
- 21. jak wyszukać istnienie bazy danych z sqlalchemy
- 22. SQL Znajdź pozycję w tabeli
- 23. Pokaż strukturę tabeli w SQL
- 24. Jak sprawdzić istnienie pliku lokalnego?
- 25. Jak sprawdzić istnienie rodziny kolumn w hector?
- 26. Jak elegancko sprawdzić istnienie rekordu w RSpec
- 27. Jak sprawdzić istnienie przestrzeni nazw w php
- 28. Jak mogę automatycznie wykryć serwer proxy?
- 29. Jak mogę wykryć kliknięcie określonego elementu?
- 30. Najszybsza kwerenda sprawdzająca istnienie wiersza w Oracle?
Zależy od serwera bazy danych. Zwykle znajduje się w nim tabela ze wszystkimi nazwami tabel, można ją po prostu zapytać. – GEOCHET
Przepraszam, to jest mój pierwszy raz przy użyciu SQL, DB jest w Access –
java.sql.DatabaseMetaData.getTables jest cross-bazy danych (sterownik JDBC dba o różnice bazy danych). –