2011-10-18 7 views
0

私はJava GUIプロジェクトに取り組んでいます。プロパティ画面の1つでは、3つのコンボボックスを使用して、最初のユーザーがこの値2.Schemaの名前とこのスキーマのすべてのテーブル名を使用してDB名を選択します。 DBから値を取得して設定するときにResultSetを使用すると問題ありません。しかし、この方法では、ResultSetの動作を知っているので、私は1つの値しか得られませんでした。だから、私はテーブルの名前をすべて取ってみましょうと言うと、他の方法があります:OracleとJavaのテーブル名のフェッチは?

SELECT TABLE_NAME FROM ALL_TABLES;そしてそれらを文字列またはsthの配列に置きます。可能な限り、リストや何かに名前を入れたい。

ありがとうございます。

EDIT:

ResultSet rs = null; 
PreparedStatement ps = null; 
String result; 
ps = conn.prepareStatement("SELECT TABLE_NAME FROM ALL_TABLES"); 

rs = ps.executeQuery(); 

while(rs.next()) 
{ 
     result = rs.getString(1); 
    System.out.println(rs.getString(1)); 
} 
+1

実際にResultSetがどのように動作するかはわかっていて、複数の行を含むことができます。コードを修正してください。 –

+0

@JB Nizet:これは奇妙なことですが、結果セットを得るための唯一の方法は、 'next()'というメソッドを呼び出すことです。 「次へ」という言葉は、通常はもっと多くの行を示唆します。 –

+0

Err、はい。だからこそ私は結果セットにいくつかの行を入れることができたと言いました。私は何か見落としてますか? –

答えて

0

「あなたは結果セットの仕組みを知っていますか?これは、クエリからすべての行を返します。

while (rs.next()) { 
    System.out.print("Column 1 returned "); 
    System.out.println(rs.getString(1)); 
} 
+0

私は、rs.getString(1)が最初の列の最初の行だけを返すと言ったように、値を「指定する」ことはよくできますか? – neocorp

+0

いいえ、rs.getString(1)は、現在の行の列1から値を取得します。 whileループの次の反復では、現在の行はro2 2、次に行3などになります。 – StevieG

+0

はい、問題ありませんが、ループにrs.next()を追加してから印刷すると発生します。どうやってやるの? – neocorp

0

あなたは基本的にメタデータのquesryする必要があります。

ここでの目的のためにテストし、簡単なコードです。方法についてはexampleを参照してください。

+0

ありがとうございますが、このようにrs.getString(3)は数値や文字を含む奇妙な値を返すだけでなく、java.lang.NullPointerExceptionをスローします...また、私はテーブル名を1つだけ取得したくありませんsth rs.getString(3);を指定します。私は配列やsthにそれらのすべてをフェッチしたい。私はどうしたらいいですか? – neocorp

0

はリストだけを使用します。

List<String> tableNames = new ArrayList<String>(); 
while(rs.next()) { 
    String tableName = rs.getString(1); 
    tableNames.add(tableName); 
} 
// there: your list contains all the table names 

tutorial about collectionsをお読みください。これは、すべてのJava開発者が知っていなければならないものです。

0

また、使用することができます

DatabaseMetaData metadata = currentConnection.getMetaData(); 
String[] names = {"TABLE"}; 
ResultSet tables = metadata.getTables(null,"%", "%", names); 
while (tables.next()) { 
    String tableName = tables.getString("TABLE_NAME"); 
    String tableSchema = tables.getString("TABLE_SCHEM"); 
} 

読むthis詳細は。

関連する問題