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

转载于:https://www.cnblogs.com/morphin3/archive/2012/03/14/2396643.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值