我需要通过我的 Java 程序检查数据库中是否存在具有特定“表名”的表。
数据库可能是不同的类型,即。微软 SQL 服务器、甲骨文、DB2。我有一个到数据库的连接对象。是否有一种方法适用于所有类型的数据库? 我可能必须扩展 Java 程序以支持更多的数据库类型,因此适用于所有数据库类型的单一方法将非常有帮助。
我正在使用的代码。这似乎对 SQL Server 数据库正常工作,但在 Oracle 或 DB2 中找不到该表
DatabaseMetaData meta = conn.getMetaData();
ResultSet res = meta.getTables(null, null, "TABLE_NAME", null);
if(!res.next()){
//table does not exist.
} else{
//table exists.
}
最佳答案
您可以使用 DatabaseMetaData.getTables()在数据库中搜索具有特定模式的表的过程。如果您搜索一个确切的名称,您将得到一个空的 ResultSet
或一个只有一行的 ResultSet
告诉您该表存在。
这对我来说适用于 Oracle 数据库,无论表属于当前用户还是其他用户。
import java.sql.*;
import oracle.jdbc.*;
public class TableExists
{
public static String exists(String tableName)
throws SQLException
{
Connection conn = new OracleDriver().defaultConnection();
DatabaseMetaData meta = conn.getMetaData();
ResultSet res = meta.getTables(null, null, tableName, null);
if(!res.next()){
return "Nope";
} else{
return "Yup";
}
}
}
关于java - 检查表是否存在,使用java中的连接对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12892778/