在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查询,它正在产生所需的输出。因此,我猜测查询中没有错误,因为它确实获取了结果。
答案 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);