2015-07-14 1 views
0

Я хочу иметь ArrayList с данными, находящимися в базе данных PostgreSQL.Как добавить к ArrayList данные ResultSet?

Например:

Column1 Column2 Column3 Column4 
A   B   C   D 
J   D   S   E 

arraylist.get(0) = (A, B, C, D) 
arraylist.get(1) = (J, D, S, E) 

У меня есть это:

public static ArrayList<Ordenes> SelectInstruct (int a) throws SQLException 
    { 
     String driver = "org.postgresql.Driver"; 
     String server = "jdbc:postgresql://localhost:5432/postgres"; 
     String user = "usuario"; 
     String pass = "contraseña"; 

     ArrayList<Ordenes> ordenes = new ArrayList<Ordenes>(); 
     Ordenes ord = new Ordenes(); 

     try 
     { 
      Class.forName(driver); 

      Connection conexion = DriverManager.getConnection(server, user, pass); 
      Statement dato = conexion.createStatement(); 

      ResultSet rs = dato.executeQuery("SELECT * FROM \"Ordenes\"" + "WHERE \"Operario\" = "+a+";"); 

      conexion.close(); 
      rs. 

      if (rs.next()) 
      { 
       ord.setNumOrden(rs.getString("Numero de orden")); 
       ord.setStatus(rs.getString("Status")); 
       ord.setFechaInicio(rs.getString("Fecha Inicio")); 
       ord.getPrd().setNumero(rs.getInt("Numero de producto")); 
       ord.getPrd().setDescripcion(rs.getString("Descripcion Producto")); 
       ord.setCantidad(rs.getInt("Cantidad Solicitada")); 
       ord.setDescripcion(rs.getString("Descripcion Orden")); 
       ord.getPrd().getInstr().get(0).setCodIns(rs.getInt("Codigo Instruccion")); 
       ord.getPrd().getInstr().get(0).setMat(rs.getInt("Material")); 
       ord.getOper().add(rs.getInt("Operario")); 

      } 

      ordenes.add(ord); 


     } 
     catch (Exception e) 
     { 

     } 

     return ordenes; 

    } 

Могу ли я вставить While или For?

+0

Несколько проблем здесь: вы закрываете соединение перед чтением из набора результатов. Вы получаете исключение, но ничего не делаете с ним (по крайней мере, 'e.printStackTrace()'! Вы можете использовать цикл while вместо 'if', но помните, что у вас есть' ord = new Ordenes() ' в конце каждой итерации. – RealSkeptic

ответ

0

Предлагаю вам создать список списков.

List<List<String>> contents = new ArrayList<List<String>>(); 

    for(int i = 0; i < 10; i++) 
    { 
     List<String> columns = new ArrayList<String>(); 
     for(int j = 0; j < 4; j ++) 
     { 
      columns.add(j + ""); 
     } 
     contents.add(columns); 
    } 
    System.out.println(contents.get(0)); 

Выход

[0, 1, 2, 3]

Применяя это к вашей проблеме

List<List<String>> contents = new ArrayList<List<String>>(); 

    while(rs.next()) 
    { 
     List<String> columnData = new ArrayList<String>(); 
     columnData.add(rs.getString("name")); 
     columnData.add(rs.getString("email")); 
     columnData.add(rs.getString("phone")); 
     columnData.add(rs.getString("fax"); 
     //Add all your data to the contents ArrayList 
     contents.add(columns); 
    } 
    System.out.println(contents.get(0)); 
0

Если вы за исключением еще Результат использования во время цикла, как показано ниже кода. Я изменяю только если до.

public static ArrayList<Ordenes> SelectInstruct (int a) throws SQLException 
    { 
     String driver = "org.postgresql.Driver"; 
     String server = "jdbc:postgresql://localhost:5432/postgres"; 
     String user = "usuario"; 
     String pass = "contraseña"; 

     ArrayList<Ordenes> ordenes = new ArrayList<Ordenes>(); 


     try 
     { 
      Class.forName(driver); 

      Connection conexion = DriverManager.getConnection(server, user, pass); 
      Statement dato = conexion.createStatement(); 

      ResultSet rs = dato.executeQuery("SELECT * FROM \"Ordenes\"" + "WHERE \"Operario\" = "+a+";"); 

      conexion.close(); 
      rs. 

      while(rs.next()) 
      { 
       Ordenes ord = new Ordenes(); 
       ord.setNumOrden(rs.getString("Numero de orden")); 
       ord.setStatus(rs.getString("Status")); 
       ord.setFechaInicio(rs.getString("Fecha Inicio")); 
       ord.getPrd().setNumero(rs.getInt("Numero de producto")); 
       ord.getPrd().setDescripcion(rs.getString("Descripcion Producto")); 
       ord.setCantidad(rs.getInt("Cantidad Solicitada")); 
       ord.setDescripcion(rs.getString("Descripcion Orden")); 
       ord.getPrd().getInstr().get(0).setCodIns(rs.getInt("Codigo Instruccion")); 
       ord.getPrd().getInstr().get(0).setMat(rs.getInt("Material")); 
       ord.getOper().add(rs.getInt("Operario")); 

      } 

      ordenes.add(ord); 


     } 
     catch (Exception e) 
     { 
      // handle the exception here 
     } 

     return ordenes; 

    }