当我通过查询时,我遇到了错误。
Errorno is Nil
Error String Is Query Problem.....
java.sql.SQLException: Column Index out of range, 2 > 1.
这是我java
方法中的代码。
PreparedStatement pstm=con.prepareStatement("select period from stu_attendancemaster where classid=? and absentdt>=? and absentdt<=?");
pstm.setInt(1,classid);
pstm.setDate(2,fromdt);
pstm.setDate(3,todt);
System.out.println("qry for prd "+pstm.toString());
rs=pstm.executeQuery();
System.out.println("after qry for prd "+pstm.toString());
if(rs.next()) {
stame = new Stu_AttendanceMasterEntity(rs.getInt(1), rs.getDate(2), rs.getInt(3), rs.getString(4), rs.getInt(5), rs.getString(6), rs.getTimestamp(7), rs.getString(8), rs.getTimestamp(9),rs.getString(10),rs.getInt(11),rs.getString(12));
} else {
flag=false;
errorstring=FN + P1 +" Class Name: " + Dep_ClassMasterDB.getClassname(classid) +" From Date: " +DateUtility.displayDate(fromdt,0) +" To Date: " +DateUtility.displayDate(todt,0) +N + V +DNE;
}
} catch(Exception e) {
flag=false;
errorstring="Query Problem..... "+e;
答案 0 :(得分:10)
此声明中出现错误:
PreparedStatement pstm=con.prepareStatement("select period from stu_attendancemaster where classid=? and absentdt>=? and absentdt<=?");
您必须在选择查询中选择所有12个字段。
Ex :(我假设您的表中有12个字段stu_attendancemaster
)请执行以下操作:
PreparedStatement pstm=con.prepareStatement("select * from stu_attendancemaster where classid=? and absentdt>=? and absentdt<=?");
如果没有,你可以像这样修改你的查询语句
select `colName1`, `colName2`, `colName3`, `colName4`, `colName5`, `colName6`, `colName7`, `colName8`, `colName9`, `colName10`, `colName11`, `colName12`, from stu_attendancemaster where classid=? and absentdt>=? and absentdt<=?
注意:colName*
应该是表格中的实际列名。
编辑:如果您只需要查询中的句点:只需rs.getInt(1)
并将rs.getInt(2)
移至rs.getInt(12)
经验法则:select
子句和ResultSet.getXXX()
中的列数应相同。
答案 1 :(得分:6)
在语句中选择一列,然后在ResultSet中访问多个列。 要解决您的问题,您必须从数据库中选择以后要从ResultSet中读取的内容。
答案 2 :(得分:1)
select语句是:
("select period from stu_attendancemaster where classid=? and absentdt>=? and absentdt<=?");
但是你在resultSet中获得的字段多于句点
rs.getInt(1), rs.getDate(2), rs.getInt(3), rs.getString(4), rs.getInt(5), rs.getString(6), rs.getTimestamp(7), rs.getString(8), rs.getTimestamp(9),rs.getString(10),rs.getInt(11),rs.getString(12));
当您只选择期间时,无法从结果集中获取这些数据。