2016-03-27 5 views
0

埋め込みH2データベースとやりとりするための簡単なjdbcプログラムを作成しようとしています。ここJBDC:クエリの後にオブジェクトのリストを取得する

"SELECT * FROM MILESTONE WHERE NAME=TEST" 

問題は、多くのオブジェクトが同じ名前を持つことができるということである(唯一のIDが一意である):私がやろうクエリは次のようです。そして、私は同じ名前のデータベースのすべてのオブジェクトをどのように取り出すことができるのか分かりません。 はこれまでのところ、私はこのプログラムを書く:このコードはのみ(最初のIDで)一つの要素を返し、同じ名前を持つ私のデータベース内の他のオブジェクトを無視すること

public Milestone findByName(String name) throws ClassNotFoundException, SQLException { 

    Milestone milestone = new Milestone(); 

    Class.forName("org.h2.Driver"); 
    Connection connection = DriverManager.getConnection("jdbc:h2:~/dao_db", "sa", ""); 
    PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM MILESTONE WHERE NAME=?"); 
    preparedStatement.setString(1, name); 

    System.out.println("Milestone selected with name = "+ name); 

    ResultSet resultSet = preparedStatement.executeQuery(); 

    if(resultSet.next()) 
     { 
     milestone.setId(resultSet.getString("id")); 
     milestone.setName(name); 
     milestone.setDescription(resultSet.getString("description")); 
     } 

    connection.close(); 

    return milestone; 
} 

問題があります。

この問題に対処してもらえますか?私はJavaのリストコンセプトにあまり慣れていません。状態はしばらくするかどうおかげ

+0

まあ、基本的にはあなただけの結果セット( 'しばらく(resultSet.next()') をループする必要があると 'にデータを保存しますリスト 'をループ内に作成します。[JDBCチュートリアル](https://docs.oracle.com/javase/tutorial/jdbc/basics/retrieving.html)では、この情報を提供しています。 –

答えて

1

はあなた:

try{ 
    PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM MILESTONE WHERE NAME=?"); 
    preparedStatement.setString(1, name); 

    System.out.println("Milestone selected with name = "+ name); 
    ResultSet resultSet = preparedStatement.executeQuery(); 

    List<Milestone> list = new ArrayList<>(); 
    while(resultSet.next(){ 
     Milestone milestone= new Milestone(); 
     milestone.setId(resultSet.getString("id")); 
     milestone.setName(name); 
     milestone.setDescription(resultSet.getString("description")); 
     list.add(milestone); 
    } 
} 
finally{ 
    if(connection != null){ 
     try{ 
      connection.close(); 
     } 
     catch(Exception ex){ 
      ex.printStackTrace(); 
     } 
    } 
} 
return list; 
+0

ありがとうございます! – salamanka44

関連する問題