10年 Java程序员,硬核人生!勇往直前,永不退缩!

欢迎围观我的git:https://github.com/R1310328554/spring_security_learn 寻找志同道合的有志于研究技术的朋友,关注本人微信公众号: 觉醒的码农,或Q群 165874185

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
不能 preparedStatement.setString(0, "" + account_no); 导致: java.sql.SQLException: Parameter index out of range (0 < 1 ).
 
 我的代码如下:
PreparedStatement preparedStatement = connection
    .prepareStatement("select * from  account where account_no = '#{account_no}';");
preparedStatement.setString(1, "" + account_no);
ResultSet resultSet = preparedStatement.executeQuery();
String x = null;
while (resultSet.next()) {
   boolean next = resultSet.next();
   double aDouble = resultSet.getDouble(1);
   double freezed_amount = resultSet.getDouble(2);
   x = aDouble + " -- " + freezed_amount;
   System.out.println(x);
}

 

 
不能这样 preparedStatement.setString(0, "" + account_no);
 
而是 preparedStatement.setString(1, "" + account_no);
 
因为
parameterIndex 从1 开始..
 
java.sql.PreparedStatement void setString(int parameterIndex,
               String x)
throws SQLException
Sets the designated parameter to the given Java String value. The driver converts this to an SQL VARCHAR or LONGVARCHAR value (depending on the argument's size relative to the driver's limits on VARCHAR values) when it sends it to the database.

Params:
parameterIndex – the first parameter is 1, the second is 2, ...
x – the parameter value
Throws:
SQLException – if parameterIndex does not correspond to a parameter marker in the SQL statement; if a database access error occurs or this method is called on a closed PreparedStatement

 

ResultSet 的 getXxx方法也是 从1 开始;官方的注释是:
java.sql.ResultSet public abstract double getDouble(int columnIndex) throws java.sql.SQLException Retrieves the value of the designated column in the current row of this ResultSet object as a double in the Java programming language. Params: columnIndex – the first column is 1, the second is 2, ... Returns: the column value; if the value is SQL NULL, the value returned is 0 Throws: java.sql.SQLException – if the columnIndex is not valid; if a database access error occurs or this method is called on a closed result set
 
+++++++++++
 
where account_no = #{account_no}
where account_no = '#{account_no}'
where account_no = '?'
上面三种sql 报错:java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
 
所以只能 where account_no = ?
 

posted on 2021-01-20 21:51  CanntBelieve  阅读(705)  评论(0编辑  收藏  举报