2016-04-23 3 views
-1

Мне нужна ваша помощь в извлечении значений из списка и добавлении их в инструкцию insert. Я имею класс с именем Employee, что:Как получить значения из java-списка

public class Employee { 
    private Integer id; //Getter and Setter 
    private String name;//Getter and Setter 
    private String remarks;//Getter and Setter 
    private boolean disable;//Getter and Setter 

public Employee(Integer id, String name, String remarks, boolean disable){ 
      this.id = id; 
      this.name = name; 
      this.remarks=remarks; 
      this.disable=disable; 
    } 

В боб, я генерирующий случайное число для employeeList:

private List<Employee> employeeList; 

private List<Employee> selectedEmployees; 

public test() { 
     super(); 
     employeeList = new ArrayList<Employee>(); 

    for (int i = 1; i <= 10; i++) { 
     employeeList.add(new Employee(i, "Name " + i, "Remarks " + i, true)); 
    } 

} 

И выбранные значения будут сохранены в списке selectedEmployees. Теперь я хочу написать новый метод для печати выбранных значений, а затем добавить их в инструкцию insert, чтобы вставить выбранные значения в таблицу.

public void updateRecords() { 
    System.out.println("Size =" + selectedEmployees.size()); 
    //Here I need help to print the values of the list and then to append them to an insert statement to the table employees 

insert into employees (id,name,remarks) values(); 
} 

ответ

0

вы можете использовать for each заявление, чтобы достичь этого, однако, потому что вы объявили переменные член private вы не можете прочитать их, так как вы должны объявить ваши член класса public или объявить добытчик для чтения данных членов

Connection connection = DriverManager.getConnection(...); 
for(Employee e:selectedEmployees) 
{ 
    System.out.println("Employee id: "+e.id+" name: " + e.name+ " remarks: " + e.remarks); 
    String sql = "INSERT INTO employees (id,name,remarks) VALUES(?,?,?);"; 
    PreparedStatement statement = connection.prepareStatement(sql); 
    statement.setInt(1, e.id); 
    statement.setString(2, e.name); 
    statement.setString(3, e.remarks); 
    statement.executeUpdate(); 
} 
+0

приглашает SQL-инъекцию – Sanjeev

+0

@Sanjeev спасибо – Pooya

0

Для arraylist вы использовали бы этот синтаксис. X - это число этого сотрудника в списке, тогда вам нужно будет создать геттеры и сеттер для ваших переменных.

Employees.get(x).getName(); 

Тогда вы создали бы рабочий объект, а затем вставьте его так.

Employee dude = new employee(1, name, remarks, disable); 

    Employees.add(dude); 
+0

Это решение не имеет никакого отношения к тому, что было задано, пожалуйста, внимательно прочитайте – Pooya

0

PreparedStatement#executeBatch является идеальным кандидатом для решения вашей проблемы.

Вы можете реализовать это следующим образом:

public void updateRecords(List<Employee> employees) { 
    System.out.println("Size =" + selectedEmployees.size()); 
    //Here I need help to print the values of the list and then to append them to an insert statement to the table employees 

    String query = "insert into employees (id,name,remarks) values (?,?,?)"; 

    Connection con = ... // establish DB connection 
    PreparedStatement ps = con.prepareStatement(query); 
    for(Employee emp : employees) { 
     ps.setNumber(1, emp.getId()); 
     ps.setString(2, emp.getName()); 
     ps.setString(3, emp.getRemarks());   
     ps.addBatch(); 
    } 

    ps.executeBatch(); 

} 

Приведенный выше код только один пример вам нужно сделать это компилируется, а также нужно сделать надлежащую обработку исключений.

Надеюсь, это поможет.

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