检查数据库中是否存在表格
问题描述:
我有一个名为tList
的列表,其中包含名称tables
的database
。此列表中的表可能存在也可能不存在。我想从每个表中检索数据,如果它存在。我正在这样做。检查数据库中是否存在表格
for(String t:tList){
sql=Select * from t
}
但如果table
不存在这种情况下,我得到异常表不存在,我的程序得到终止。如何处理这个问题,以便我只能检索数据,并且只有在该表存在的情况下
在另一种情况下,如果表存在但它比我也收到错误。请在这两种情况下帮助
答
你试过DatabaseMetaData.getTables() 例子:
DatabaseMetaData md = connection.getMetaData();
ResultSet rs = md.getTables(null, null, t, null); //t is your tableName (defined in loop of your question)
while (rs.next()) {
System.out.println(rs.getString(3));
}
编辑
要回答你的空表的问题:
//your query
sql=Select * from t
Statement stmt = yourDBConnection.createStatement();
ResultSet rs = stmt.executeQuery(sql);
if (!rs .isBeforeFirst()) {
System.out.println("Table is empty");
}
答
我觉得更合适的方式是获取数据java.sql.DatabaseMetaData中。
java.sql.Connection对象能够提供描述其表的信息,支持的SQL语法,存储过程,此连接的功能等等。这些信息是通过getMetaData方法获得的。
参见: https://docs.oracle.com/javase/7/docs/api/java/sql/Connection.html https://docs.oracle.com/javase/7/docs/api/java/sql/DatabaseMetaData.html
嗯,...你可以捕获该异常....和一个空表不应该给你一个错误。 – Henry
它是oracle吗?或者什么databse? – user7294900
sybase数据库 – zaib7777