Is there a way I can disable prepared statements or somehow use an
alternative to prepared statements for my MS Access adapter?
As near as I can tell the MS Access prepared statements are flaky and
will cause bogus exceptions, as in the attached case where MS Access
reports: "Too few parameters. Expected 36."
--
Øyvind Harboe
http://www.zylin.com
58486 [SocketListener0-8] INFO org.objectstyle.cayenne.access.QueryLogger -
SELECT t0.TREAT_ACTIONDESC, t0.TREAT_CORRECTIVEDESC, t0.TREAT_DESC,
t0.TREAT_ENTEREDBYCONTACT, t0.TREAT_ENTEREDDATE, t0.TREAT_LIMITDATE,
t0.TREAT_NO, t0.TREAT_PARENTID, t0.TREAT_QUALITYTYPE, t0.TREAT_REFINT,
t0.TREAT_REPORTEDDATE, t0.TREAT_SOURCETYPE, t0.TREAT_UPDATEDDATE,
t0.TREAT_TREATASPECID, t0.TREAT_CRITID, t0.TREAT_ELCSTATUSID,
t0.treat_causedcontact, t0.treat_treatcontact, t0.TREAT_ID, t0.TREAT_ENTEREDBY,
t0.freq_id, t0.TREAT_INCIDID, t0.TREAT_PROID, t0.TREAT_REPORTEDBYCONPER,
t0.TREAT_REPORTEDBYCONTACT, t0.TREAT_RESPONSIBLECONTACT, t0.TREAT_TREATROLE,
t0.sev_id, t0.TREAT_SYSORGUNITID, t0.TREAT_TREATUSER, t0.TREAT_TREATCSPECID
FROM TREATMENT t0, ELC_STATUS t1, TREAT_AREASPEC t2, TREAT_AREASPECROOT t3
WHERE t0.TREAT_ELCSTATUSID = t1.ELCSTATUS_ID AND t0.TREAT_TREATASPECID =
t2.TREATASPEC_ID AND t2.TREATASPECR_ID = t3.TREATASPECR_ID AND
(((t1.ELCSTATUS_PROGVALUE = ?) OR (t1.ELCSTATUS_PROGVALUE = ?)) AND
(t3.TREATASPECR_TREATELCROLEID IN (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)) AND
((t0.treat_treatcontact IS NULL) OR (t0.treat_treatcontact IN (?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?))) AND ((t0.TREAT_TREATASPECID <>
?) OR (t0.TREAT_TREATASPECID IS NOT NULL)) AND ((t0.TREAT_TREATASPECID IS NULL)
OR (t0.TREAT_TREATASPECID IS NOT NULL)) AND (t1.TREAT_ELCSTATUSID = ?)) ORDER
BY t0.TREAT_NO DESC [bind: 'undertreatment', 'treatmentcompletedopen',
'0636F7A4-006B-4926-873F-B5CF888F239C', 'E5DED96B-5F93-4575-85A4-1C14D94B9744',
'48461B6C-791B-11d4-8792-00508BCE14E0', '04190624-7503-11d4-9078-00508BD89D95',
'04190625-7503-11d4-9078-00508BD89D95', '07AF23BD-7DCA-41cc-9268-A4A08CF0B2DF',
'A5E8553F-BB4D-4158-BA53-D8F206817938', 'A5F7E0D8-E204-478f-A7A4-DCC07C712673',
'AEBEDF2E-2656-4733-99A7-2EAC231DE379', 'B90B4CCB-43EA-4187-B139-4138041A2F8D',
'E17775E2-897A-41d3-8CC0-D96E24E15DE7', '39FF0F5C-8D2D-468a-BACD-8CB77647F87A',
'ECCB2AFA-40E1-42eb-9C15-8BD725656A78', '5XW2E8Q4REREJ93GON3J5PNEKEHG04D85G53',
'7F32C61C-D687-4e8e-BECC-2F2FE4FA1CEC', '99F6E01D-16A9-4cb2-8217-50C8AF0CB64F',
'99F6E01D-16A9-4cb2-8217-50C8AF0CB64F', '99F6E01D-16A9-4cb2-8217-50C8AF0CB64F',
'99F6E01D-16A9-4cb2-8217-50C8AF0CB64F', '99F6E01D-16A9-4cb2-8217-50C8AF0CB64F',
'99F6E01D-16A9-4cb2-8217-50C8AF0CB64F', '1CADB577-0E64-459E-AD68-BE2F7653CB40',
'5XW2E8Q4REREJ93GON3J5PNEKEHG04D85G53', '99F6E01D-16A9-4cb2-8217-50C8AF0CB64F',
'7F32C61C-D687-4e8e-BECC-2F2FE4FA1CEC', '99F6E01D-16A9-4cb2-8217-50C8AF0CB64F',
'99F6E01D-16A9-4cb2-8217-50C8AF0CB64F', '39064AF2-EE5E-404e-9FD2-1C21A68A9E54',
'C0B23DD1-263C-4016-AE60-2FEEA354444F', '7F32C61C-D687-4e8e-BECC-2F2FE4FA1CEC',
'5XW2E8Q4REREJ93GON3J5PNEKEHG04D85G53', '', 'STATUSEN']
58548 [SocketListener0-8] INFO org.objectstyle.cayenne.access.QueryLogger -
*** error.
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Too few
parameters. Expected 36.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLExecute(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeQuery(Unknown Source)
at
org.objectstyle.cayenne.access.jdbc.SelectAction.performAction(SelectAction.java:108)
at
org.objectstyle.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:95)
at
org.objectstyle.cayenne.access.DataNode.performQueries(DataNode.java:309)
at
org.objectstyle.cayenne.access.DataDomainLegacyQueryAction.execute(DataDomainLegacyQueryAction.java:117)
at
org.objectstyle.cayenne.access.DataDomain$1.transform(DataDomain.java:745)
at
org.objectstyle.cayenne.access.DataDomain.runInTransaction(DataDomain.java:846)
at
org.objectstyle.cayenne.access.DataDomain.performQueries(DataDomain.java:742)
at
org.objectstyle.cayenne.access.DataContext.internalPerformIteratedQuery(DataContext.java:1356)
at
org.objectstyle.cayenne.access.DataContext.performIteratedQuery(DataContext.java:1322)
at
org.objectstyle.cayenne.access.IncrementalFaultList.fillIn(IncrementalFaultList.java:226)
at
org.objectstyle.cayenne.access.IncrementalFaultList.<init>(IncrementalFaultList.java:192)
at
org.objectstyle.cayenne.access.DataContextQueryAction.interceptPaginatedQuery(DataContextQueryAction.java:128)
at
org.objectstyle.cayenne.access.DataContextQueryAction.execute(DataContextQueryAction.java:86)
at
org.objectstyle.cayenne.access.DataContext.onQuery(DataContext.java:1422)
at
org.objectstyle.cayenne.access.DataContext.performQuery(DataContext.java:1411)
at
com.zylin.payback.app.reports.TreatmentSearchExp.refresh(TreatmentSearchExp.java:76)
at
com.zylin.payback.app.html.BuildReportQuery.submit(BuildReportQuery.java:185)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.apache.tapestry.listener.ListenerMap.invokeTargetMethod(ListenerMap.java:257)
at
org.apache.tapestry.listener.ListenerMap.access$100(ListenerMap.java:46)
at
org.apache.tapestry.listener.ListenerMap$SyntheticListener.invoke(ListenerMap.java:97)
at
org.apache.tapestry.listener.ListenerMap$SyntheticListener.actionTriggered(ListenerMap.java:102)
at org.apache.tapestry.form.Form.renderComponent(Form.java:423)
at
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857)
at org.apache.tapestry.form.Form.rewind(Form.java:568)
at
org.apache.tapestry.engine.RequestCycle.rewindForm(RequestCycle.java:432)
at org.apache.tapestry.form.Form.trigger(Form.java:582)
at
org.apache.tapestry.engine.DirectService.service(DirectService.java:169)
at
org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:889)
at
org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:198)
at
org.apache.tapestry.ApplicationServlet.doPost(ApplicationServlet.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:616)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428)
at
org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:830)
at
com.zylin.payback.app.tapestry.SequentialSessionFilter.doFilter(SequentialSessionFilter.java:27)
at
org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821)
at
org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:471)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1530)
at
org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
at
org.mortbay.jetty.plus.PlusWebAppContext.handle(PlusWebAppContext.java:158)
at org.mortbay.http.HttpServer.service(HttpServer.java:909)
at org.mortbay.http.HttpConnection.service(HttpConnection.java:820)
at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986)
at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837)
at
org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245)
at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
58970 [SocketListener0-8] ERROR com.zylin.payback.app.html.ExceptionPage -
org.apache.tapestry.ApplicationRuntimeException: Unable to invoke method submit
on [EMAIL PROTECTED]: [v.1.2.1 August 30 2006] Error performing query.
org.apache.tapestry.ApplicationRuntimeException: Unable to invoke method submit
on [EMAIL PROTECTED]: [v.1.2.1 August 30 2006] Error performing query.
at
org.apache.tapestry.listener.ListenerMap.invokeTargetMethod(ListenerMap.java:283)
at
org.apache.tapestry.listener.ListenerMap.access$100(ListenerMap.java:46)
at
org.apache.tapestry.listener.ListenerMap$SyntheticListener.invoke(ListenerMap.java:97)
at
org.apache.tapestry.listener.ListenerMap$SyntheticListener.actionTriggered(ListenerMap.java:102)
at org.apache.tapestry.form.Form.renderComponent(Form.java:423)
at
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857)
at org.apache.tapestry.form.Form.rewind(Form.java:568)
at
org.apache.tapestry.engine.RequestCycle.rewindForm(RequestCycle.java:432)
at org.apache.tapestry.form.Form.trigger(Form.java:582)
at
org.apache.tapestry.engine.DirectService.service(DirectService.java:169)
at
org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:889)
at
org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:198)
at
org.apache.tapestry.ApplicationServlet.doPost(ApplicationServlet.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:616)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428)
at
org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:830)
at
com.zylin.payback.app.tapestry.SequentialSessionFilter.doFilter(SequentialSessionFilter.java:27)
at
org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821)
at
org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:471)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1530)
at
org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
at
org.mortbay.jetty.plus.PlusWebAppContext.handle(PlusWebAppContext.java:158)
at org.mortbay.http.HttpServer.service(HttpServer.java:909)
at org.mortbay.http.HttpConnection.service(HttpConnection.java:820)
at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986)
at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837)
at
org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245)
at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
Caused by: org.objectstyle.cayenne.CayenneRuntimeException: [v.1.2.1 August 30
2006] Error performing query.
at
org.objectstyle.cayenne.access.IncrementalFaultList.fillIn(IncrementalFaultList.java:271)
at
org.objectstyle.cayenne.access.IncrementalFaultList.<init>(IncrementalFaultList.java:192)
at
org.objectstyle.cayenne.access.DataContextQueryAction.interceptPaginatedQuery(DataContextQueryAction.java:128)
at
org.objectstyle.cayenne.access.DataContextQueryAction.execute(DataContextQueryAction.java:86)
at
org.objectstyle.cayenne.access.DataContext.onQuery(DataContext.java:1422)
at
org.objectstyle.cayenne.access.DataContext.performQuery(DataContext.java:1411)
at
com.zylin.payback.app.reports.TreatmentSearchExp.refresh(TreatmentSearchExp.java:76)
at
com.zylin.payback.app.html.BuildReportQuery.submit(BuildReportQuery.java:185)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.apache.tapestry.listener.ListenerMap.invokeTargetMethod(ListenerMap.java:257)
... 31 more
Caused by: org.objectstyle.cayenne.CayenneException: [v.1.2.1 August 30 2006]
Error getting ResultIterator: Query Exception:
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Too few
parameters. Expected 36.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLExecute(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeQuery(Unknown Source)
at
org.objectstyle.cayenne.access.jdbc.SelectAction.performAction(SelectAction.java:108)
at
org.objectstyle.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:95)
at
org.objectstyle.cayenne.access.DataNode.performQueries(DataNode.java:309)
at
org.objectstyle.cayenne.access.DataDomainLegacyQueryAction.execute(DataDomainLegacyQueryAction.java:117)
at
org.objectstyle.cayenne.access.DataDomain$1.transform(DataDomain.java:745)
at
org.objectstyle.cayenne.access.DataDomain.runInTransaction(DataDomain.java:846)
at
org.objectstyle.cayenne.access.DataDomain.performQueries(DataDomain.java:742)
at
org.objectstyle.cayenne.access.DataContext.internalPerformIteratedQuery(DataContext.java:1356)
at
org.objectstyle.cayenne.access.DataContext.performIteratedQuery(DataContext.java:1322)
at
org.objectstyle.cayenne.access.IncrementalFaultList.fillIn(IncrementalFaultList.java:226)
at
org.objectstyle.cayenne.access.IncrementalFaultList.<init>(IncrementalFaultList.java:192)
at
org.objectstyle.cayenne.access.DataContextQueryAction.interceptPaginatedQuery(DataContextQueryAction.java:128)
at
org.objectstyle.cayenne.access.DataContextQueryAction.execute(DataContextQueryAction.java:86)
at
org.objectstyle.cayenne.access.DataContext.onQuery(DataContext.java:1422)
at
org.objectstyle.cayenne.access.DataContext.performQuery(DataContext.java:1411)
at
com.zylin.payback.app.reports.TreatmentSearchExp.refresh(TreatmentSearchExp.java:76)
at
com.zylin.payback.app.html.BuildReportQuery.submit(BuildReportQuery.java:185)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.apache.tapestry.listener.ListenerMap.invokeTargetMethod(ListenerMap.java:257)
at
org.apache.tapestry.listener.ListenerMap.access$100(ListenerMap.java:46)
at
org.apache.tapestry.listener.ListenerMap$SyntheticListener.invoke(ListenerMap.java:97)
at
org.apache.tapestry.listener.ListenerMap$SyntheticListener.actionTriggered(ListenerMap.java:102)
at org.apache.tapestry.form.Form.renderComponent(Form.java:423)
at
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857)
at org.apache.tapestry.form.Form.rewind(Form.java:568)
at
org.apache.tapestry.engine.RequestCycle.rewindForm(RequestCycle.java:432)
at org.apache.tapestry.form.Form.trigger(Form.java:582)
at
org.apache.tapestry.engine.DirectService.service(DirectService.java:169)
at
org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:889)
at
org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:198)
at
org.apache.tapestry.ApplicationServlet.doPost(ApplicationServlet.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:616)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428)
at
org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:830)
at
com.zylin.payback.app.tapestry.SequentialSessionFilter.doFilter(SequentialSessionFilter.java:27)
at
org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821)
at
org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:471)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1530)
at
org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
at
org.mortbay.jetty.plus.PlusWebAppContext.handle(PlusWebAppContext.java:158)
at org.mortbay.http.HttpServer.service(HttpServer.java:909)
at org.mortbay.http.HttpConnection.service(HttpConnection.java:820)
at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986)
at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837)
at
org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245)
at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
at
org.objectstyle.cayenne.access.util.IteratedSelectObserver.getResultIterator(IteratedSelectObserver.java:104)
at
org.objectstyle.cayenne.access.DataContext.internalPerformIteratedQuery(DataContext.java:1357)
at
org.objectstyle.cayenne.access.DataContext.performIteratedQuery(DataContext.java:1322)
at
org.objectstyle.cayenne.access.IncrementalFaultList.fillIn(IncrementalFaultList.java:226)
... 43 more