2016-03-27 16 views
0

Gömülü H2 veritabanımla etkileşimde bulunmak için basit bir jdbc programı yazmaya çalışıyorum. BuradaJBDC: Bir sorgudan sonra bir nesne listesi almak

"SELECT * FROM MILESTONE WHERE NAME=TEST" 

sorun birçok nesneleri aynı ada sahip olmasıdır (sadece kimlik tektir): Ben yapmaya çalışacağım sorgu şudur. Ve veritabanımın aynı adı taşıyan tüm nesnelerini nasıl alabileceğimi bilmiyorum. Şimdiye kadar bu programı yazmak: Bu kod yalnızca (ilk kimlikle) bir öğeyi döndürür ve aynı ada sahip benim veritabanındaki diğer nesneleri göz ardı olduğunu

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

sorundur.

Bu sorunla uğraşmak için lütfen bana yardımcı olabilir misiniz? Java'daki liste kavramlarına aşina değilim. Teşekkür

+0

Peki, temelde sadece sonuç kümesinde döngü gerekir ('iken (resultSet.next()') ve içine veri depolamak bir ' 'Döngü içinde [JDBC öğreticisi] (https://docs.oracle.com/javase/tutorial/jdbc/basics/retrieving.html) size bu bilgiyi verir (ve daha fazlası) –

cevap

1

Sizin durum bir süre olmalıdır eğer:

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

teşekkürler, işe yarıyor! – salamanka44

İlgili konular