-2

我认为这会奏效,但遗憾的是它没有。我得到了错误-

ArrayList 类型中的方法 add(CustomerInfo) 不适用于参数 (String)

我的目标是返回一个Arraylist并使用 get 方法进行访问。当我使用 String 时Arraylist,我不能使用 arr.get(i) .userID , ... .FirstName ...

类 CustomerInfo.java

  public class CustomerInfo {
    private static Connection conn = null;
    private static ResultSet resultSet = null;
    public String UserID;
    public String FirstName;
    public String SecondName;


    public ArrayList<CustomerInfo> findCustomer (String userID) throws SQLException {

            conn = null;
            PreparedStatement pstmt = null;

            try {

                JDBCConnection jdbcConn = new JDBCConnection();
                conn = jdbcConn.openConnection();

                ArrayList<CustomerInfo> customerList  new ArrayList<CustomerInfo();

                String sql = "SELECT USERID FROM TAB0025 WHERE USERID = ?";
                pstmt = conn.prepareStatement(sql);
                pstmt.setString(1, userID);

                resultSet = pstmt.executeQuery();


                while (resultSet.next()) {

                customerList.add(resultSet.getString("USERID"));
                customerList.add(resultSet.getString("FIRSTNAME"));
                customerList.add(resultSet.getString("SECONDNAME"));


                this.UserID = resultSet.getString("USERID");
                this.FirstName = resultSet.getString("FIRSTNAME");
                this.SecondName  resultSet.getString("SECONDNAME");

                }

                return customerList;

            } catch (Exception e) {
                throw e;
            }

            finally {
                conn.close();
            }


        public String getUserID() {
            return this.UserID;
        }

        public String getFirstname() {
            return this.FirstName;

        }

        public String getSecondName() {
            return this.SecondName;

        }

    }

类 InputReader.java

    // ...

    if (CustomerInfo.ExsistUserID(this.UserID)) {

                    CustomerInfo edit = new CustomerInfo();
                    ArrayList<CustomerInfo> arr = new ArrayList<CustomerInfo>();

                    arr = edit.findCustomer(this.UserID);


                    System.out.println("UserID: "+ arr.get(0).getUserID() + "  First Name: "arr.get(0).getFirstName() + " Second Name: " arr.get(0).getSecondName()); 

                } 
   // ...
4

1 回答 1

3

错误在这三行:

customerList.add(resultSet.getString("USERID"));
customerList.add(resultSet.getString("FIRSTNAME"));
customerList.add(resultSet.getString("SECONDNAME"));

正如您在上面看到的,resultSet.getString()方法返回一个String对象,但您的 ArrayList 是类型对象的容器CustomerInfo,因此您需要创建一个新CustomerInfo对象,使用 ResultSet 中的值填充其字段,然后将该对象添加到您的 ArrayList 中,如下所示:

custInfo = new CustomerInfo();
custInfo.UserID = resultSet.getString("USERID");
custInfo.FirstName = resultSet.getString("FIRSTNAME");
custInfo.SecondName = resultSet.getString("SECONDNAME");

customerList.add(custInfo);
于 2015-03-13T08:24:23.660 回答