如何解决JSP中的无效列索引?

时间:2016-03-07 21:44:58

标签: java oracle jsp

在JSP中执行以下代码时,我收到“无效列索引”错误。

<%
        int eno;
        String firstnm;
        String lastnm;
        String gen;
        int ph;
        String desig;
        Date dt;
        String dnm;

        String qry="select e.empid,fname,lname,gender,d.mobile,j.designation,j.doj,n.dname from emp_master e,emp_digital d,emp_job j,dept n where e.empid=d.eno and e.empid=j.eno and e.deptid=n.dno";

        ResultSet rs=st.executeQuery(qry);

          while(rs.next())
          {
            eno=rs.getInt(0);
            firstnm=rs.getString(1);
            lastnm=rs.getString(2);
            gen=rs.getString(3);
            ph=rs.getInt(2);
            desig=rs.getString(0);
            dt=rs.getDate(1);
            dnm=rs.getString(1);

            %>
         <tr bgcolor="#D4DFFF" >
             <td><% out.println(eno); %></td>
          <td ><% out.println(firstnm); %></td>
          <td><% out.println(lastnm); %></td>
          <td><% out.println(gen); %></td>
          <td><% out.println(ph); %></td>
          <td><% out.println(desig); %></td>
          <td><% out.println(dt); %></td>
          <td><% out.println(dnm); %></td>
        </tr>
       <%
        }
       %>

我有以下数据库:

Emp_master:

- EMPID Number primary key

- FNAME Varchar2

- LNAME Varchar2

- GENDER    Varchar2

- DOB   Date

- DEPTID    Number

Emp_digital:

- USERID varchar2 primary key

- PASSWORD  Varchar2

- MOBILE    number

- ENO   number foreign key

- DOB   Date

- DEPTID    Number

Emp_job:

- designation   varchar2

- doj   date

- salary    number

- Eno   primary key,foreign key

Dept:

- Dno   Number primary key

- DNAME Varchar2

- LOC   Varchar2

我根据每张表给出了索引号。但不知道为什么它会给出无效列索引错误。我在Oracle中运行SQL查询,它正在产生所需的输出。因此,我猜测查询中没有错误,因为它确实获取了结果。

1 个答案:

答案 0 :(得分:0)

  

我根据每个表格给出了索引编号

getInt(...)getString(...)的调用中的数字不是根据每个表的索引。它们是所有列的列表中的索引。您正在选择8列,并且从1开始编号,您需要使用索引1到8.例如,请参阅documentation for the ResultSet.getInt method

所以不要写

            eno=rs.getInt(0);
            firstnm=rs.getString(1);
            lastnm=rs.getString(2);
            gen=rs.getString(3);
            ph=rs.getInt(2);
            desig=rs.getString(0);
            dt=rs.getDate(1);
            dnm=rs.getString(1);

            eno=rs.getInt(1);
            firstnm=rs.getString(2);
            lastnm=rs.getString(3);
            gen=rs.getString(4);
            ph=rs.getInt(5);
            desig=rs.getString(6);
            dt=rs.getDate(7);
            dnm=rs.getString(8);