After fooling around a bit it looks like

ParameterMetaData pmd = stmt.getParameterMetaData();
in public void fillStatement(PreparedStatement stmt, Object[] params)
is what is causing the exception.

Exception in thread "main" java.sql.SQLException: Unsupported feature
        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269)
        at 
oracle.jdbc.dbaccess.DBError.throwUnsupportedFeatureSqlException(DBError.java:690)
        at 
oracle.jdbc.driver.OraclePreparedStatement.getParameterMetaData(OraclePreparedStatement.java:4421)
        at 
org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.getParameterMetaData(DelegatingPreparedStatement.java:223)

This was added (from annotated source)
> 171 :         bayard  747724  
> 172 :                         ParameterMetaData pmd = 
> stmt.getParameterMetaData();
> 173 :                         if (pmd.getParameterCount() < params.length) {
> 174 :                         throw new SQLException("Too many parameters: 
> expected "
> 175 :                         + pmd.getParameterCount() + ", was given " + 
> params.length);
> 176 :                         } 

This seems to be an Oracle problem. After googleing a variety of folks seem to 
have this problem in different applications.

I just found a newer jar ojdbc5.jar which ameliorated the problem. But the 
above lines could break a lot of oracle code using the older ojdbc14.jar.
Perhaps it could be removed or conditionally run like code below it in 
fileStatement.


mas

Mark Shifman wrote:
> Hi:
> I just downloaded the new release, dropped the jar into an app and I am 
> getting
> java.sql.SQLException: Unsupported feature Query:
> 
> My database is oracle 10g and I am using the ojdbc14.jar.  Everything worked 
> just fine
> with an old commons-dbutils-1.1.jar.
> 
> My simple program did this:
> 
>       final String sql = "select * from p_user where user_id=?";
>                Map m = null;
>                try {
>                       QueryRunner run = new QueryRunner(getDataSource());
>                       m =  (Map)run.query(sql,"60", new MapHandler());
>                       } catch (SQLException ex) {
>                               ex.printStackTrace();
>                       }
>               System.out.println(m);
> and threw this:
> java.sql.SQLException: Unsupported feature Query: select * from p_user where 
> user_id=? Parameters: [60]
>       at org.apache.commons.dbutils.QueryRunner.rethrow(QueryRunner.java:540)
>       at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:397)
>       at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:486)
>       at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:443)
>       at org.ycmi.ypedBilling.Billing.printtest1(Billing.java:270)
>       at org.ycmi.ypedBilling.Billing.test1(Billing.java:96)
>       at org.ycmi.ypedBilling.Billing.main(Billing.java:42)
> 
> I also tried  public QueryRunner(DataSource ds, boolean pmdKnownBroken) with 
> pmdKnownBroken=true and false and I
> got the same exception.
> 
> Has something else changed or is something broken with the new version and 
> oracle?
> Thanks in advance:
> mas
> 

-- 
 Mark Shifman MD. Ph.D.
 Yale Center for Medical Informatics
 Phone (203)737-5219
 [email protected]

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to