2017-10-10 83 views
2

我有一个名为tList的列表,其中包含名称tablesdatabase。此列表中的表可能存在也可能不存在。我想从每个表中检索数据,如果它存在。我正在这样做。检查数据库中是否存在表格

for(String t:tList){ 
    sql=Select * from t 
} 

但如果table不存在这种情况下,我得到异常表不存在,我的程序得到终止。如何处理这个问题,以便我只能检索数据,并且只有在该表存在的情况下

在另一种情况下,如果表存在但它比我也收到错误。请在这两种情况下帮助

+1

嗯,...你可以捕获该异常....和一个空表不应该给你一个错误。 – Henry

+0

它是oracle吗?或者什么databse? – user7294900

+0

sybase数据库 – zaib7777

回答

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"); 
    } 
+0

尝试,但我认为这是为了从数据库中获取所有表,我认为在这也是我会得到同样的问题 – zaib7777

+0

我会再试一遍,但随着它我想检查如果表是空的或不。如果它是空的,我想让我的程序运行。我可以用上面的语句来处理这个问题 – zaib7777

+0

表空的不同于你的问题'我想从每个表中检索数据,如果它存在。' 空表将导致你的空结果集,而.next()将是假的。 – Optional