Wie kann ich feststellen, ob eine bestimmte Tabelle in einer bestimmten SQL-Datenbank in Java existiert?Wie kann ich die Existenz einer SQL-Tabelle in Java erkennen?
Antwort
Sie können DatabaseMetaData.getTables() verwenden, um Informationen zu vorhandenen Tabellen abzurufen.
Diese Methode funktioniert transparent und ist unabhängig von der Datenbank-Engine. Ich denke, es fragt Informationsschematabellen hinter den Kulissen ab.
Edit:
Hier ist 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));
}
Danke das ist perfekt. –
Dieses Beispiel funktioniert nicht für mich. Bitte sehen Sie - http://stackoverflow.com/questions/11699023/program-runs-without-exception-but-shows-no-table-names –
Dies ist kein sprachspezifisches, sondern ein datenbankspezifisches Problem. Sie würden die Metadaten in der Datenbank nach der Existenz dieses bestimmten Objekts abfragen.
In SQL Server zum Beispiel:
SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[table]')
AND type in (N'U')
Schreiben Sie eine Abfrage, die die Tabelle/View-Abfragen, die die Tabellen auflistet (dies ist unterschiedlich, je nach DB-Anbieter). Rufen Sie das von Java an.
Googeln information_schema.tables wird viel helfen.
Je nach DB, können Sie (MySQL)
SHOW TABLES
oder (Oracle)
SELECT * FROM user_objects WHERE object_type = 'TABLE'
oder eine andere Sache, für SQL Server. Durchlaufen Sie die Ergebnisse für MySQL oder filtern Sie weiter auf der Oracle-Seite.
Warum nicht nur sehen, ob es in sysobjects (für SQL Server) ist?
SELECT [name] FROM [sysobjects] WHERE type = 'U' AND [name] = 'TableName'
Es gibt eine JDBC-Funktion, Datenbank-Anbieter unabhängig - siehe [java.sql.DatabaseMetaData # getTables()] [1]
Sie können die DatabaseMetaData Instanz erhalten, indem java.sql.Connection#getMetaData()
Aufruf [ 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 [])
Verwenden Sie java.sql.DatabaseMetaData.getTables(null, null, YOUR_TABLE, null)
. Wenn die Tabelle existiert, erhalten Sie eine ResultSet
mit einem Datensatz.
Für MS Access:
Select Count(*) From MSysObjects
Where type=1 And name='your_table_name_here'
Für alle ANSI-kompatible Datenbanken: (mySQL, SQL Server 2005/2008, Oracle, PostgreSQL, SQLLite, vielleicht andere)
select 1 from information_schema.tables where table_name = @tableName
Ich versuche, dies gegen Amazon RDS (mit MySql) zu tun, und die hier veröffentlichten Lösungen funktionieren nicht. Alles gibt nur ein leeres ResultSet zurück.
Das einzige, was ich in der Lage bin zu Arbeit zu bekommen ist:
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));
}
Ich bin nicht sicher, ob die Probleme mit den anderen Lösungen in diesem Thread zu RDS einzigartig sind oder es ist etwas, über JDBC, dass entgeht mir.
- 1. Wie kann ich die Existenz einer Maus auf einer Website erkennen?
- 2. Wie kann ich die Existenz einer Funktion in Dart testen?
- 3. Wie kann ich die Existenz einer Umgebungsvariablen überprüfen?
- 4. Wie kann ich die in einer Schriftart definierten Zeichen erkennen?
- 5. Wie erkennt man die Existenz einer Klasse mit SFINAE?
- 6. Wie kann ich die Struktur einer Mongo-Datenbank erkennen?
- 7. Überprüfen Sie die Existenz einer HashMap Schlüssel
- 8. MAC_install4j6: Kann Java erkennen
- 9. Wie kann ich die Videodateidauer in Minuten mit PHP erkennen?
- 10. Wie kann ich lachende Wörter in einer Zeichenfolge erkennen?
- 11. Wie kann ich DOS-Zeilenumbrüche in einer Datei erkennen?
- 12. Wie kann ich die Schlüssel einer Map in Java sortieren?
- 13. Wie kann ich die Existenz einer Datei mit rspec nachahmen/vortäuschen?
- 14. Wie kann ich mit XCUIElementsQuery auf die Existenz einer UIView testen?
- 15. Wie kann man die Zeilennummer erkennen, die einer Pufferposition entspricht?
- 16. Wie kann ich Dateizugriffe in Linux erkennen?
- 17. Wie kann ich die Tageslichtersparnis automatisch in PHP erkennen?
- 18. Wie kann ich die Netzwerkverbindung in Windows Phone 7 erkennen?
- 19. Wie kann ich Berührung in cocos2d erkennen?
- 20. Wie überprüft man die Existenz einer Datei im Csh-Skript?
- 21. Wie kann man nach der Existenz einer DB suchen?
- 22. Wie kann ich die Neigung einer Linie erkennen, die ein Pixel in MATLAB "kreuzt"?
- 23. Wie kann ich den "Pfad" einer eingebetteten Ressource erkennen?
- 24. Wie suche ich nach der Existenz einer Datenbank mit sqlalchemy
- 25. Wie kann ich die CLR-Version eines Crash-Dumps erkennen?
- 26. Wie kann ich die Existenz eines Elements in std :: vector in einem Satz überprüfen?
- 27. Wie kann ich die Standardausgabe einer Java-Aufgabe sehen?
- 28. Wie kann ich die Unicode-Codepunkte einer Java-Zeichenfolge durchlaufen?
- 29. Wie kann ich CSS-Filter erkennen?
- 30. Wie kann ich die über mein Fenster gezogene Datei erkennen?
Hängt davon ab, welcher Datenbankserver. Es gibt normalerweise eine Tabelle mit allen Tabellennamen, die Sie einfach abfragen können. – GEOCHET
Entschuldigung das ist mein erstes Mal mit SQL, die DB ist in Access –
java.sql.DatabaseMetaData.getTables ist Cross-Datenbank (JDBC-Treiber kümmert sich um Datenbank Unterschiede). –