2017-10-04 6 views
0

私はデータベースからいくつかのテーブルを取得し、これらのテーブル名をハッシュセットに格納しています。私はテーブルを取得するために私が使用しているコードは次のとおりですハッシュセットのテーブルから特定の列からデータを取得する

DatabaseMetaData md = conn.getMetaData(); 
ResultSet rs = md.getTables(null, null, "%", null); 
while (rs.next()) { 
    hash. add(rs. getString(3)) ; 
} 

私はハッシュセットでテーブルを持っています。

ここでは、特定の列の「学生」のハッシュセットでこれらのすべてのテーブルからデータを取得したいとします。すべての値をリストに入れます。私は、これらすべての表の列studentの異なる値をすべて取り出したいと考えています。表にはこの学生の列が含まれる場合と含まれない場合があります。テーブルにこの列が含まれている場合、その個別の値をリストに格納します。それを行う方法を提案してください。

答えて

1

databasemetadataを使用してテーブルデータを抽出することはできません。 Databasemetadataは、名前、列、データ型などのテーブルの詳細のみを提供します。データベースとのJDBC接続を作成し、次に選択したクエリを起動して必要な結果を得る必要があります。

DatabaseMetaData md = conn.getMetaData(); 
// get tables from database 
ResultSet rs = md.getTables(null, null, "%", null); 
while (rs.next()) { 
    hash. add(rs. getString(3)) ; 
} 
// getColumns of table 'tableName' 
ResultSet rs2 = md.getColumns(null, null, tableName, null); 
boolean found = false; 
while (rs2.next()) { 
String columnName = rs2.getString("COLUMN_NAME"); 
if (columnName.equalsIgnoreCase("student")) { 
found = true; 
break; 
} 
} 
if (found) { 
String driver = "provide the driver for database here like com.mysql....."; 
String url = "provide the connection url here like jdbc://...." 
String userName = "provide DB username" 
String password = "provide DB username" 
Class.forName(driver) 
Connection conn = DriverManager.getConnection(url, userName, password) 
Statement st = conn.createStatement(); 
Resultset rs3 = null; 

// Now take the tableName from your hashset and pass it into below query. 
String query = "select student from " + tableName; 
rs3 = st.executeQuery(query); 
While(rs3.next()) { 
// Store the results anywhere you want by obtaining 'rs3.getString(1)' 
} 
} 

ホープこれはあなたの問題を解決します 以下はそうするための簡単なJDBCプログラムです。もしあれば、コードの誤字を無視してください。

+0

学生がテーブルに存在しない場合は、エラーが発生します..どのように処理するのですか? – zaib7777

+0

@ zaib7777これを行うには:接続を行う前にテーブルの列名を取得し(オフコースdatabasemetadataを使用)、列名があなたの意図する名前すなわち学生と一致するかどうかを確認します。はいの場合は、テーブルからデータを抽出するだけです。あなたの問題を解決しますか? – ABC

+1

サンプルコードを表示してください。最後のコメントを理解するのに役立ちます – zaib7777

関連する問題