检查数据库

时间:2017-10-10 04:27:18

标签: java jdbc

我有一个名为tList的列表,其中包含tables的{​​{1}}个名称。此列表中的表可能存在也可能不存在。我想从每个表中检索数据(如果存在)。我是这样做的。

database

但是在这种情况下,如果for(String t:tList){ sql=Select * from t } 不存在,我会得到一个例外,表不存在,我的程序终止。如何处理这个问题,这样我才能检索数据,只有当该表存在时

在另一个场景中,如果表存在但是它是空的,我也会收到错误。请帮助解决这两种情况

2 个答案:

答案 0 :(得分:2)

我认为更合适的方法是获取数据是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

答案 1 :(得分:1)

你试过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"); 
  }