具有PreparedStatement的数据库中的ArrayList

时间:2014-11-26 11:53:14

标签: java database arraylist

我有这样的方法:

public List<Employee> getEmployeeListViaSurname(String surname) {

      List<Employee> EmployeeListViaSurname = new ArrayList<Employee>();
      int id = -1;
      String name = "";


      try {
        PreparedStatement pst = null;
        pst = con.prepareStatement("select * from Employee where surname = ?");
        pst.setString(1, surname);
        ResultSet rs = pst.executeQuery();
        while (rs.next()) {
            id = rs.getInt("id");
            name = rs.getString("name");
            //EmployeeListViaSurname.add(id, name); <---- error
        }
    } catch (Exception e) {
        System.err.println(e);
    }



    return EmployeeListViaSurname;
}

有人可以告诉我如何通过姓氏添加员工。

例如getEmployeeListViaSurname(&#34; George&#34;);

2 个答案:

答案 0 :(得分:2)

EmployeeListViaSurname是一个java列表,其中包含Employee个对象,如其类型声明和初始化(&lt;&gt;括号中的类型名称)所示:

List<Employee> EmployeeListViaSurname = new ArrayList<Employee>();

java sdk文档包含标准java库的所有信息,告诉您可用的类,方法签名以及如何使用它们。在这种情况下,请参阅documentation for List.add(E)(Google java api docs Listjava api docs ArrayList)。

请注意,它需要一个E对象,该对象应与列表参数化的对象类型相同,在您的情况下为Employee。但是你传递的是intString,所以在尝试编译它时会失败,你会得到一个语法错误。

要解决此问题,首先使用其中一个构造函数实例化一个新的Employee对象,然后将其传递给add方法。例如。类似的东西:

while (rs.next()) {
  id = rs.getInt("id");
  name = rs.getString("name");
  Employee employee = new Employee(id, name, surname);
  EmployeeListViaSurname.add(employee);
}

您创建和初始化Employee对象的具体细节取决于Employee class definition

构造函数是一种特殊方法,没有与类同名的返回类型,看起来像public Employee() { ... }public Employee(String id, String name, String surname) { ... }。如果它只有一个无参数构造函数,则使用它然后设置字段。

如果您需要更多帮助,则需要向我们提供Employee课程的详细信息。

答案 1 :(得分:1)

ArrayList包含对象 - 在您的情况下为Employee个对象,您必须创建一个对象才能添加到ArrayList中 - 您无法直接添加属性:

// provided a fitting Employee constructor exists:
EmployeeListViaSurname.add( new Employee( id, name ) ); 

干杯,