There is an option to disable the use of the metadata command as some DBs (Oracle for example) don't implement it properly. See https://commons.apache.org/proper/commons-dbutils/apidocs/org/apache/commons/dbutils/QueryRunner.html#QueryRunner(javax.sql.DataSource,%20boolean)
If that doesn't help, then I'm not sure... Bill- On Nov 19, 2015 3:24 AM, "Amol Kulkarni" <[email protected]> wrote: > Thank you all for your response . as we are unable to determine problem, we > have moved back to plain jdbc for this. > > On Wed, Nov 18, 2015 at 5:03 PM, Amol Kulkarni <[email protected]> > wrote: > > > I think so, the problem is with dbutils to query this particular table. > If > > there was something in debug logs to see why getParameterMetaData() is > > throwing error when used with dbutils , we could pinpoint the issue. > > > > On Wed, Nov 18, 2015 at 4:59 PM, Benedikt Ritter <[email protected]> > > wrote: > > > >> Hello Amol, > >> > >> 2015-11-17 9:07 GMT+01:00 Amol Kulkarni <[email protected]>: > >> > >> > We tested this code with standalone app.The > stmt.getParameterMetaData() > >> > in QueryRunner.java is throwing error. We asked DBA , but he does not > >> see > >> > any query in logs coming. He is the debug. We add QueryRunner.java in > >> > classpath so that we can debug / put some sys outs. > >> > > >> > query coming here is SELECT * FROM DIGITAL_CERTIFICATE_CACHE WHERE > >> > CERT_STATUS=? AND CERT_USAGE=? > >> > params coming here is I > >> > java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not > >> exist > >> > > >> > at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450) > >> > at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:392) > >> > at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:385) > >> > at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:938) > >> > at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:655) > >> > at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:249) > >> > at oracle.jdbc.driver.T4C8Odscrarr.doODNY(T4C8Odscrarr.java:96) > >> > at > >> > > >> > > >> > oracle.jdbc.driver.T4CPreparedStatement.doDescribe(T4CPreparedStatement.java:719) > >> > at > >> > oracle.jdbc.driver.OracleStatement.describe(OracleStatement.java:4223) > >> > at > >> > > >> > > >> > oracle.jdbc.driver.OracleResultSetMetaData.<init>(OracleResultSetMetaData.java:52) > >> > at > >> > > >> > > >> > oracle.jdbc.driver.OracleStatement.getResultSetMetaData(OracleStatement.java:4206) > >> > at > >> > > >> > > >> > oracle.jdbc.driver.OraclePreparedStatement.getMetaData(OraclePreparedStatement.java:4603) > >> > at > >> > > >> > > >> > oracle.jdbc.driver.OraclePreparedStatementWrapper.getMetaData(OraclePreparedStatementWrapper.java:1510) > >> > at > >> > > >> > > >> > oracle.jdbc.driver.OracleParameterMetaData.getParameterMetaData(OracleParameterMetaData.java:70) > >> > at > >> > > >> > > >> > oracle.jdbc.driver.OraclePreparedStatement.getParameterMetaData(OraclePreparedStatement.java:11621) > >> > at > >> > > >> > > >> > oracle.jdbc.driver.OraclePreparedStatementWrapper.getParameterMetaData(OraclePreparedStatementWrapper.java:1552) > >> > at > >> > > >> > > >> > com.npower.dpi.services.util.AbstractQueryRunner.fillStatement(AbstractQueryRunner.java:228) > >> > at > >> com.npower.dpi.services.util.QueryRunner.query(QueryRunner.java:351) > >> > at > >> com.npower.dpi.services.util.QueryRunner.query(QueryRunner.java:215) > >> > at com.npower.dpi.services.util.test.main(test.java:63) > >> > > >> > If we put a try catch block around stmt.getParameterMetaData() in > >> > AbstractQueryRunner.fillStatement() which eats this error, then we > get a > >> > proper result back. So I think the query is not executed as before > that > >> > only an exception is thrown. So what could be an issue in getting > >> > metadata. > >> > > >> > >> I'm not sure I can follow. Do you think there is a problem in dbutils? > >> > >> Benedikt > >> > >> > >> > > >> > > >> > > >> > On Tue, Nov 17, 2015 at 12:35 PM, Benedikt Ritter <[email protected] > > > >> > wrote: > >> > > >> > > Hello Amol, > >> > > > >> > > can you see the query being sent to your database in the query log? > >> Maybe > >> > > it is different from what you're expecting. > >> > > > >> > > Benedikt > >> > > > >> > > 2015-11-17 7:23 GMT+01:00 Amol Kulkarni <[email protected]>: > >> > > > >> > > > Yes it does work when done through sql developer command line , > also > >> > > tried > >> > > > from sql plus it works. The problem occurs only through dbutils. > >> > > > > >> > > > On Tue, Nov 17, 2015 at 12:33 AM, Benedikt Ritter < > >> [email protected]> > >> > > > wrote: > >> > > > > >> > > > > Hello Amol, > >> > > > > > >> > > > > 2015-11-10 21:03 GMT+01:00 Amol Kulkarni <[email protected] > >: > >> > > > > > >> > > > > > Hi, > >> > > > > > > >> > > > > > I am getting a ORA-00942: table or view does not exist when I > >> query > >> > > > using > >> > > > > > dbutils api with 2 parameters. My enviroment si WAS 8.5.5 and > >> > oracle > >> > > db > >> > > > > 11g > >> > > > > > > >> > > > > > I am using dbutils1.6 to make db calls. The problem occurs if > I > >> > send > >> > > > two > >> > > > > > query parameters like SELECT * FROM DIGITAL_CERTIFICATE_CACHE > >> > WHERE > >> > > > > > CERT_SUBJECT_NAME=? AND CERT_STATUS=? Parameters: > >> > > > > [70-B3-D5-1F-30-4E-DF-20, > >> > > > > > I] . If I send only one SELECT * FROM > DIGITAL_CERTIFICATE_CACHE > >> > > WHERE > >> > > > > > CERT_SUBJECT_NAME=? Parameters: [70-B3-D5-1F-30-4E-DF-20] then > >> > query > >> > > > > > returns and application is working. My dbutils code is as > >> follows > >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > > QueryRunner run = new QueryRunner(${DataSource}); > >> > > > > > // getting Query from propertues file to > >> fetchBySubject > >> > > > > > String sqlquery = PropertyFileUtil > >> > > > > > .getPropertyValue("fetchbysubject.sql"); > >> > > > > > [fetchbysubject.sql = SELECT * FROM DIGITAL_CERTIFICATE_CACHE > >> WHERE > >> > > > > > CERT_SUBJECT_NAME=? AND CERT_STATUS=?] > >> > > > > > // preparing instance for Custom ResultSetHandler > to > >> > > > process > >> > > > > > // ResultSet > >> > > > > > ResultSetHandler<List<DigitalCertificateCache>> > >> > handler = > >> > > > new > >> > > > > > DPIServicesDAOResultSetHandler(); > >> > > > > > results = run.query(sqlquery, handler, new > Object[] > >> { > >> > > > > > subjectname, > >> > > > > > "I" }); > >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > > Can somebody please point the problem. > >> > > > > > > >> > > > > > >> > > > > Does it work, when you run the query via the command line? > >> > > > > > >> > > > > Regards, > >> > > > > Benedikt > >> > > > > > >> > > > > > >> > > > > -- > >> > > > > http://people.apache.org/~britter/ > >> > > > > http://www.systemoutprintln.de/ > >> > > > > http://twitter.com/BenediktRitter > >> > > > > http://github.com/britter > >> > > > > > >> > > > > >> > > > >> > > > >> > > > >> > > -- > >> > > http://people.apache.org/~britter/ > >> > > http://www.systemoutprintln.de/ > >> > > http://twitter.com/BenediktRitter > >> > > http://github.com/britter > >> > > > >> > > >> > >> > >> > >> -- > >> http://people.apache.org/~britter/ > >> http://www.systemoutprintln.de/ > >> http://twitter.com/BenediktRitter > >> http://github.com/britter > >> > > > > >
