【问题标题】:MySQL java IndexOutOfBoundsExceptionMySQL java IndexOutOfBoundsException
【发布时间】:2016-11-15 03:58:53
【问题描述】:

我在显示我的数据库内容时遇到了问题,我遇到了这个错误:

org.apache.jasper.JasperException: java.lang.IndexOutOfBoundsException: Index: 2, Size: 2

有人可以帮我解决这个问题吗?我有另一个在我的 JSP 页面中有效的查询,但这个特定的查询似乎有例外:

select epi.firstName, epi.lastName, esi.license
from `employee-personal-information` epi
join`employee-safeguard-information` esi
    on epi.employeeID = esi.employeeID 
join oic oic
    on esi.employeeID = oic.oicID;

这是我的 DAO 代码:

public ArrayList<Employee> viewOIC() {
    ArrayList<Employee> newEmployee = new ArrayList<Employee>();

    try {
        DBConnectionFactory myFactory = DBConnectionFactory.getInstance();
        Connection conn = myFactory.getConnection();
        PreparedStatement pstmt = conn.prepareStatement("select epi.firstName, epi.lastName, esi.license\n" + "from `employee-personal-information` epi join`employee-safeguard-information` esi on epi.employeeID = esi.employeeID\n" + "  join oic oic on esi.employeeID = oic.oicID\n" + ";");



        ResultSet rs = pstmt.executeQuery();
        while (rs.next()) {

            Employee tempRI = new Employee();
            tempRI.setFirstName(rs.getString("firstName"));
            tempRI.setLastName(rs.getString("lastName"));
            tempRI.setLicense(rs.getString("license"));
            newEmployee.add(tempRI);

        }
        pstmt.close();
        conn.close();
        return newEmployee;
    } catch (SQLException ex) {
        Logger.getLogger(EmployeeDAO.class.getName()).log(Level.SEVERE, null, ex);
    }
    return null;
}

请帮我解决这个问题。任何帮助,将不胜感激!谢谢!

我的 JSP 代码:

                <% EmployeeDAO employeeDAO = new EmployeeDAO();
                            ArrayList<Employee> employeeList = employeeDAO.viewEmployee();%>
                <div class="form-bottom">
                    <form action="addTicket" method="post" class="complaint-form">

                        <div class="form-group">
                            Involved Guard:
                            <select name="form-guardInvolved" id="form-guardInvolved" onfocus="emptyElement('status')">
                                <% for (int i = 0; i < employeeList.size(); i++) {%>
                                <option value="<%=employeeDAO.viewEmployee().get(i).getFirstName() + " "%>
                                <%=employeeDAO.viewEmployee().get(i).getLastName()%>"> <%=employeeDAO.viewEmployee().get(i).getFirstName() + " "%>
                                <%=employeeDAO.viewEmployee().get(i).getLastName()%> </option>
                                <% }%>
                            </select>
                            <p> </p>
                        </div>
                        <div class="form-group">
                             Reported By:
                            <select name="form-reportedBy" id="form-reportedBy" onfocus="emptyElement('status')">
                                <% for (int i = 0; i < employeeList.size(); i++) {%>
                                <option value="<%=employeeDAO.viewOIC().get(i).getFirstName() + " "%>
                                <%=employeeDAO.viewOIC().get(i).getLastName()%>"> <%=employeeDAO.viewOIC().get(i).getFirstName() + " "%>
                                <%=employeeDAO.viewOIC().get(i).getLastName()%> </option>
                                <% }%>
                            </select>
                            <p> </p>
                        </div>

第一部分有效,但错误在第二部分。

【问题讨论】:

  • 请包含异常堆栈跟踪。
  • 我看不出在发布的代码中可能会引发 IOOB 异常。
  • 我觉得问题很可能发生在调用 viewOIC() 的类中。您可能还想添加该代码。
  • Mark Rotteveel - 我已经发布了堆栈跟踪 Jeutnarg - 你是什么意思?我的 JSP 代码?

标签: java mysql jsp indexoutofboundsexception dao


【解决方案1】:

您是否尝试将 for 循环设置为 for (int i = 0; i

【讨论】:

  • 我刚刚试了一下,还是一样的错误。我也试过 int i = -1 和 i = 1 但它不起作用。我认为这里的问题是查询本身,但我不明白,因为与我的第一个查询相比,我使用相同的格式
  • 它现在可以工作了。我犯了一个小错误。我没有为 oic 放置数组列表。谢谢!
猜你喜欢
  • 2013-09-30
  • 1970-01-01
  • 2016-03-22
  • 2019-08-11
  • 1970-01-01
  • 1970-01-01
  • 2018-12-03
  • 2012-08-15
  • 1970-01-01
相关资源
最近更新 更多