¿Cómo puedo detectar si existe una determinada tabla en una base de datos SQL determinada en Java?¿Cómo puedo detectar la existencia de una tabla SQL en Java?
Respuesta
Puede utilizar DatabaseMetaData.getTables() para obtener información acerca de las tablas existentes.
Este método funciona de forma transparente y es independiente del motor de la base de datos. Creo que consulta tablas de esquema de información detrás de escena.
Editar:
Aquí es 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));
}
Gracias que es perfecto. –
Ese ejemplo no funciona para mí. Ver - http://stackoverflow.com/questions/11699023/program-runs-without-exception-but-shows-no-table-names –
Esto no es un problema específico del idioma, sino de una base de datos. Debería consultar los metadatos en la base de datos para la existencia de ese objeto en particular.
En SQL Server, por ejemplo:
SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[table]')
AND type in (N'U')
escribir una consulta que consulta la tabla/vista que mostrará una lista de las tablas (esto es diferente en función de proveedor DB). Llama eso desde Java.
Google information_schema.tables ayudará mucho.
Dependiendo de la base de datos, puede hacerlo (MySQL)
SHOW TABLES
o (Oracle)
SELECT * FROM user_objects WHERE object_type = 'TABLE'
u otra cosa para SQL Server. Ciclo a través de los resultados de MySQL o un filtro adicional en el de Oracle.
¿Por qué no simplemente ver si está en sysobjects (para SQL Server)?
SELECT [name] FROM [sysobjects] WHERE type = 'U' AND [name] = 'TableName'
hay una característica JDBC, la base de datos de proveedores independientes - véase [java.sql.DatabaseMetaData # getTables()] [1]
, usted puede obtener la instancia DatabaseMetaData llamando 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 [])
Use java.sql.DatabaseMetaData.getTables(null, null, YOUR_TABLE, null)
. Si la tabla existe, obtendrá un ResultSet
con un registro.
de MS Access:
Select Count(*) From MSysObjects
Where type=1 And name='your_table_name_here'
para todas las bases compatible con ANSI: (MySQL, SQL Server 2005/2008, Oracle, PostgreSQL, SqlLite, tal vez otros)
select 1 from information_schema.tables where table_name = @tableName
Estoy tratando de hacer esto en contra del RDS de Amazon (ejecutando MySql), y las soluciones publicadas aquí no funcionan. Todo simplemente devuelve un ResultSet vacío.
Lo único que he podido llegar al trabajo es:
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));
}
No estoy seguro de si los problemas con las otras soluciones en este tema son exclusivos de RDS o es algo sobre JDBC que me está eludiendo
- 1. ¿Cómo detectar la existencia de una clase usando SFINAE?
- 2. ¿Cómo detectar filas duplicadas en una tabla de SQL Server?
- 3. Cómo probar la existencia de objetos en SQL Firebird?
- 4. ¿Cómo puedo detectar la existencia de un mouse en un sitio web?
- 5. ¿Cómo puedo verificar la existencia de una variable de entorno?
- 6. ¿Cómo puedo detectar caracteres Unicode en una cadena de Java?
- 7. detectar la existencia de ventana después de recarga
- 8. Cómo verificar la existencia o no de tabla
- 9. En Java, ¿cómo puedo eliminar una tabla sqlite?
- 10. ¿Detecta la existencia de una cámara en la aplicación iPhone?
- 11. DataRow ADO.NET - verificar la existencia de columnas
- 12. SQL ¿Puedo tener una restricción "condicionalmente única" en una tabla?
- 13. Java isFile(), isDirectory() sin verificar la existencia
- 14. ¿Puedo recorrer una variable de tabla en T-SQL?
- 15. ¿Cómo puedo detectar excepciones de hilos AWT en Java?
- 16. ¿Cómo se prueba la existencia de un usuario en SQL Server?
- 17. ¿Qué comando SQL puedo usar para ver la estructura de una tabla en SQL Server?
- 18. ¿Cómo puedo determinar si una columna está en la clave principal de su tabla? (SQL Server)
- 19. ¿cómo puedo detectar las teclas de flecha en la consola java no en la GUI?
- 20. ¿Cómo detectar la pantalla actual con Java?
- 21. sql: cómo copiar de una tabla a otra tabla
- 22. ¿Cómo puedo resembrar una columna de identidad en una variable de tabla T-SQL?
- 23. Cómo generar una secuencia de comandos de la tabla mediante la consulta SQL en SQL Server
- 24. ¿Cómo creo una tabla hash en Java?
- 25. ¿Cómo puedo verificar la existencia del elemento en std :: vector, en una oración?
- 26. ¿Cómo puedo probar si una columna existe en una tabla usando una declaración SQL?
- 27. ¿Cómo puedo detectar si existe una tabla (que no tiene una clase o ID)?
- 28. SQL Actualizar una tabla según las condiciones en otra tabla
- 29. ¿Cómo escribo una consulta SQL para detectar claves primarias duplicadas?
- 30. La forma más rápida de insertar una gran cantidad de registros en una tabla en SQL
Depende de qué servidor de base de datos. Por lo general, hay una tabla con todos los nombres de tabla, solo puede consultarla. – GEOCHET
lo siento esta es la primera vez que uso SQL, la base de datos está en Access –
java.sql.DatabaseMetaData.getTables es una base de datos cruzada (el controlador JDBC se encarga de las diferencias de la base de datos). –