2010-11-08 6 views
0

ЕСЛИ У меня есть запрос, как:извлечения данных из SQL запроса

Затем, делая это, я должен написать каждый элемент из таблицы, чтобы получить выход. как

Теперь, как я получаю все записи в моем полете. У меня есть 2 столбца в нем.

+1

Не стесняйтесь. Используйте ctrl + K для форматирования кода при отправке вопросов. –

ответ

1

Предполагая, что обе колонки имеют тип String/Varchar.

List<Flight> flights = new ArrayList<Flight>(); 
while(rs.next()){ 
    Flight flight = new Flight(); 
    flight.setColumn1(rs.getString(1)); // Its better to use column name instead to avoid any unexpected bug 
    flight.setColumn2(rs.getString(2)); // Its better to use column name instead to avoid any unexpected bug 
} 

P.S. Его лучше указать столбцы для извлечения в ваш запрос, т. Е. select COL1, COL2,... from....

+0

Для вашего решения, используя индексирование на 'getString', разработчик перечисляет все соответствующие столбцы в SQL. SQL-тип SELECT * никогда не будет работать для поиска индексирования. –

+0

@ The Elite Gentleman: Когда вы перечисляете все столбцы, как я сам предлагал, то кому нужны индексы для получения значений. :) –

+0

в моей таблице, у меня есть varchar, char, time, decimal .... Могу ли я использовать этот метод? –

1

Подробнее о ResultSet. Код может выглядеть следующим образом:

while (rs.next()) 
    { 
    String fld1 = rs.getString("column_name1"); 
    int fld2 = rs.getInt("column_name2"); 
    ... 
    } 
0

Самый удобный (и наименее подвержены ошибкам) ​​способ, вероятно, использовать Spring в JdbcTemplate абстракцию:

Spring собственный пример кода:

List<Actor> actors = this.jdbcTemplate.query(
     "select first_name, last_name from t_actor", 
     new RowMapper<Actor>() { 
      public Actor mapRow(ResultSet rs, int rowNum) throws SQLException{ 
       Actor actor = new Actor(); 
       actor.setFirstName(rs.getString("first_name")); 
       actor.setLastName(rs.getString("last_name")); 
       return actor; 
      } 
     }); 
1

После у вас есть ResultSet, вам придется его повторить таким образом:

PreparedStatement ps = null; 
ResultSet rs = null; 
List<Flight> flightList = null; 

try { 
    String Query = "select * FROM flights WHERE flight_no=? "; 
    ps = connection.prepareStatement(query); 
    ps.setString(1,"CSC585") 
    rs = s.executeQuery(); 

    if (rs != null) { 
     flightList = new ArrayList<Flight>(); 

     while (rs.next()) { //Moves the cursor from 1 to N 
      flightList.add(mapResultSet(rs)); //Write your own mapper.... 
     } 
    } 
} catch (SQLException e) { 

} finally { 
    //First close the ResultSet, then the PreparedStatement 
    if (rs != null) { 
     try { 
      rs.close(); 
      rs = null; 
     } catch (SQLException e) {} 
    } 

    if (ps != null) { 
     try { 
      ps.close(); 
      ps = null; 
     } catch (SQLException e) {} 
    } 
} 


Flight mapResultSet(ResultSet rs) throws SQLException { 
    Flight flight = null; 

    if (rs != null) { 
     flight = new Flight(); 

     flight.setFlightNo(rs.getString("flight_no")); //Column Name as per your SQL table 
    } 

    return flight... 
} 

Имейте в виду: После того, как вы закончили с помощью PreparedStatement и ResultSet, закройте ваш ResultSet первый тогда ваш PreparedStatement/* Заявление *.

Смежные вопросы