Java 验证用户名、密码

本文探讨了一个在数据库操作中遇到的参数索引范围错误问题,并通过修改SQL查询语句和参数传递方式成功解决。重点在于理解错误提示含义、SQL语句的正确使用及参数化查询的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 数据库操作

2.验证用户

2.1. 查询

String sql = String.format("select count(*) from user where name='%s' and password='%s';", userName,
                    userPass);

int row = 0;
jb.queryForObject(sql, Integer.class, row );

  根据 row 的值来判断是否有该用户。

2.1. 错误 

Parameter index out of range (1 > number of parameters, which is 0)
2.1.1. sql语句

  测试后没问题

2.1.2. 猜测一

  format 语句错误,检查后发现没错

2.1.3. 猜测二

  int 改为 integer ,改后也没有变化

2.1.4. 还是从提示本身入手

  好像是说 jb.queryForObject(sql, Integer.class, row ); 有问题。网上查了下,改为:

Integer row = (Integer) jb.queryForObject(
                    "select count(*) from user where name=? and password=?",new Object[] {userName, userPass},    
                    java.lang.Integer.class);
  • 成功了!!!
  • ‘%d’ 或 '?' 要改为 ?
  • 应该想到 已经连接成功,这个错误是出在查询上。

   

转载于:https://www.cnblogs.com/SimonGao/p/4967214.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值