如何从java列表获取值

问题描述:

我需要您的帮助来从列表中获取值并将它们附加到插入语句。我有一个类中调用员工说:如何从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。现在我想编写一个新的方法来打印提取的值,然后将它们附加到一个插入语句中以将选定的值插入到表中。

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

可以使用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

对于arraylist,您可以使用此语法。 X是列表中该员工的数量,那么您将不得不为您的变量创建getter和setter。

Employees.get(x).getName(); 

然后,您将创建一个聘用对象,然后像这样插入。

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

    Employees.add(dude); 
+0

这个解决方案与已经提出的问题无关,请仔细阅读 – Pooya

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(); 

} 

上面的代码只是你需要使它编译,也需要做适当的异常处理的例子。

希望这会有所帮助。