com.microsoft.sqlserver.jdbc.SQLServerException: 索引 1 超出范围

在做一个小的学生信息管理系统,涉及到jdbc的运用,在完成查询功能时,查询语句为

 

1 public static final String SELECT_STUDENT = "select * from student where sno='?'";


然后在Dao中相关语句为

 1 public boolean selectStudent(String sql,Vector rowData) {
2 try {
3 Class.forName(drivername);
4 con = DriverManager.getConnection(dbURL, userName, userPwd);
5 ps = con.prepareStatement(DBSql.SELECT_STUDENT);
6 ps.setString(1, sql);
7 rs=ps.executeQuery();
........

便提示错误
com.microsoft.sqlserver.jdbc.SQLServerException: 索引 1 超出范围

网上查了下,说可能是sql与剧中有?而没有赋值,但我确信自己是赋值了,通过ps.setString(1, sql);这一句,反反复复地查看,就是想不出问题所在,后来发现之前完成的一个功能中有类似的用法,才知道sql语句中若?代表一个字符串,两旁不用加单引号,即不用写成'?',只需要单个问号就行了

把sql语句改成如下就行了

    public static final String SELECT_STUDENT = "select * from student where sno=?";

XD

posted on 2012-03-14 21:43  Morphin3  阅读(3617)  评论(1编辑  收藏  举报