private List<User> findUserList(int pageNum,int pageSize){

DBInfo db = this.getDBInof();
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "select * from" +
"{select user_info.* rownum rn from" +
"{select * from user_info where user_id<>'root' order by user_id}" +
"where rownum<=?}" +
      "where rn>? ";
/*String sql = "select rownum rn,user_info.* from" +
"{select *  from user_info where user_id<>'root'order by user_id}" +
"where rn<=? and rn>?";*/
List<User> list = new ArrayList<User>();


try{
Class.forName(db.getDriverName());
}catch(ClassNotFoundException e){
e.printStackTrace();
}


try{
conn = DriverManager.getConnection(db.getUrl(),db.getUserName(),db.getPassword());
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, pageSize*pageNum);
pstmt.setInt(2, (pageNum-1)*pageSize);
rs = pstmt.executeQuery();
while(rs.next()){
User user = new User();
user.setUserId(rs.getInt("user_id"));
user.setUserName(rs.getString("user_name"));
user.setPassword(rs.getString("password"));
user.setEmail(rs.getString("email"));
user.setContactTel(rs.getString("contact_tel"));
user.setCreateDate(rs.getTimestamp("create_date"));

list.add(user);

}

}catch(SQLException e){
System.out.println("------------------findUserList----------------");
e.printStackTrace();
}finally{
if(rs!=null){
try{
rs.close();
}catch(SQLException e){
e.printStackTrace();
}
}
if(pstmt!=null){
try{
pstmt.close();
}catch(SQLException e){
e.printStackTrace();
}
}
if(conn!=null){
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
return list;
}报错信息:java.sql.SQLException: Parameter index out of range (2 > number of parameters, which is 1).
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:2569)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:2600)
at com.mysql.jdbc.PreparedStatement.setInt(PreparedStatement.java:2551)
at cn.nuaa.web.sysmgr.manager.UserManagerIMP.findUserList(UserManagerIMP.java:127)
at cn.nuaa.web.sysmgr.manager.UserManagerIMP.findPageModel(UserManagerIMP.java:219)
at cn.nuaa.web.test.Test.main(Test.java:21)
另外,代码中您看到任何不好的地方都请说说。。晚辈真心求帮助。。谢谢

解决方案 »

  1.   

    对不起,俺学识有限,帮不了你    ~~~~(>_<)~~~~ 
      

  2.   

    Parameter index out of range (2 > number of parameters, which is 1).
    明显是你的 索引越界
      

  3.   

    是用的oracle数据库吧,网上搜搜分页,然后再看看你的语句。
    感觉上你的where语句有点we提。
      

  4.   

    {select user_info.* rownum rn from" +
                        "{select * from user_info where user_id<>'root' order by user_id}" +
                    "where rownum<=?}" +
                      "where rn>? ";
    怎么是大括号?报错是说,你只有一个参数,而你传了2个过去。
      

  5.   

    conn = DriverManager.getConnection(db.getUrl(),db.getUserName(),db.getPassword());
                pstmt = conn.prepareStatement(sql);
                [color=#FF0000pstmt.setInt(1, pageSize*pageNum);
                pstmt.setInt(2, (pageNum-1)*pageSize);
    ][/color]
                rs = pstmt.executeQuery();
    你就2个参数,不应该从0开始设置吗? 为什么是从1开始的呢
      

  6.   

    你这sql真蛋疼,你这条sql要也应该是这样的:
    select * from (select u_table*,rownum rn from(select * from user_info u_table where user_id<>'root' order by user_id)) where rn<=? and rn>?;
      

  7.   

    写错了 我日 太久没写了
    select * from (select u_table.*,rownum rn from(select * from user_info u_table where user_id<>'root' order by user_id) where rn<=? and rn>?);
      

  8.   

    又错了 谁能把我上面的删掉
    select * from (select u_table.*,rownum rn from(select * from user_info  where user_id<>'root' order by user_id) u_table where rn<=? and rn>?);
      

  9.   

    有两种可能:
    1) sql语句。感觉楼主的sql语句挺别扭,不过我没环境不好测,楼主可以试试在mysql控制台先运行下语句。或者试试楼上朋友的sql;
    2) 同一个PreparedStatement对象被几个方法调用但是没有及时释放使得pstmt不能新建也会导致这种异常;http://www.coderanch.com/t/307234/JDBC/java/java-sql-SQLException-Parameter-index 尾贴
      

  10.   

    明确错误位置:
    cn.nuaa.web.sysmgr.manager.UserManagerIMP.findUserList(UserManagerIMP.java:127)
    明确错误原因:
    Parameter index out of range (2 > number of parameters, which is 1).明显你的参数有问题导致127行代码的错误。应该很容易发现问题。看懂异常信息是需要时间和经验的累积,但是不管是简单或是复杂的异常信息都要有意识的去慢慢读
      

  11.   

    sql语句中有问题
    你的语句
     String sql = "select * from" +
                    "{select user_info.* rownum rn少一个","号,而且别名user_info不对,你的语句根本没有别名 from" +
                        "{select * from user_info where user_id<>'root' order by user_id}" +
                    "where rownum<=?}" +
                      "where rn>? ";正确的是:   
    String sql = "select * from (select ui.*, rownum rn from (select * from user_info where user_id<>'root' order by user_id) ui where rownum<=?) where rn>? ";