2017-10-10 15 views
2

databaseという名前のtablesを含むtListというリストがあります。このリストの表は存在しても存在しなくてもよい。私はそれが存在する場合、すべてのテーブルからデータを取得したい。私はこれのようにやっている。テーブルにデータベースが存在するかどうかを調べる

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

しかし、このシナリオでtableが存在しない場合、私はテーブルが存在しないと私のプログラムが終了することになった例外を取得しています。テーブルのみが存在する場合にのみデータを取得できるようにこれを処理する方法

テーブルが存在していても空でもある場合は、エラーが発生します。これらの2つのシナリオ

+1

まあ、...あなたは、例外をキャッチすることができます....そして、空のテーブルはあなたにエラーを与えるべきではありません。 – Henry

+0

それはoracleですか?またはどのようなdatabse? – user7294900

+0

sybaseデータベース – zaib7777

答えて

1

に助けてください、あなたがDatabaseMetaData.getTables() 例みました:私は思う

//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()はfalseになります。 – Optional

2

:あなたの空のテーブルの質問に答えるために

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)); 
} 

編集

をより適切な方法はデータを取得することです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

関連する問題