PreparedStatement 查询时无效的列索引 .

PreparedStatement 查询时无效的列索引
在使用PreparedStatement  仅对oracle数据库进行查询是在   ps.setObject(i, values[i]);老是提示无效的列索引sql

错误代码代码
public List queryForBeans(final String sql, final Object... values)  {  
        Connection connection = null;  
        try {  
            connection = super.getDataSource().getConnection();  
            PreparedStatement ps = connection.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE, 数据库

ResultSet.CONCUR_READ_ONLY);  
            if (values != null) {  
                for (int i = 0; i < values.length; i++) {  
                    ps.setObject(i, values[i]);  
                }  
            }  
            ResultSet rs = ps.executeQuery();  
            RowSetDynaClass rsdc = new RowSetDynaClass(rs);  
            rs.close();  
            ps.close();  
            return rsdc.getRows();  
 
        } catch (SQLException ex) {  
            throw this.getExceptionTranslator().translate("", sql, ex);  
        } finally {  
            this.close(connection);  
        }  
    }  oracle

public List queryForBeans(final String sql, final Object... values)  {
  Connection connection = null;
  try {
   connection = super.getDataSource().getConnection();
   PreparedStatement ps = connection.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE, this

ResultSet.CONCUR_READ_ONLY);
   if (values != null) {
    for (int i = 0; i < values.length; i++) {
     ps.setObject(i, values[i]);
    }
   }
   ResultSet rs = ps.executeQuery();
   RowSetDynaClass rsdc = new RowSetDynaClass(rs);
   rs.close();
   ps.close();
   return rsdc.getRows();索引

  } catch (SQLException ex) {
   throw this.getExceptionTranslator().translate("", sql, ex);
  } finally {
   this.close(connection);
  }
 } 
后来在网上收了下原来是ps的参数是从1开始的而不是从0开始的,全部老是报无效的列索引,改成    ps.setObject(i+1, valuesget

[i]);这样就ok了。还有在网上也看到有人出现一样的问题,但不是我这样的问题,而是下标的数量与?的数量不一致,或者将?写成io

了?class

相关文章
相关标签/搜索