2013-03-18 298 views
1

我有一個更新方法來更新基於特定字段的表的內容,並且我收到以下異常。PreparedStatementCallback; JDBC中的錯誤SQL語法Spring

代碼是:

public void updateTaxoActive(String oldDesc, String description) { 
    Logger.getLogger(TypeCategoryJDBCTemplate.class.getName()).log(Level.INFO, "old taxonomy code is {0} new description is {1}", new Object[]{oldDesc, description}); 
    String sql = "update product.typecategory set taxonomydescription = ? where taxonomydescription = ?"; 
    jdbcTemplateObject.update(sql, new Object[]{description,oldDesc},new TypeCategoryMapper()); 
} 

的例外是:

Exception in thread "AWT-EventQueue-0" org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [update product.typecategory set taxonomydescription = ? where taxonomydescription = ?]; nested exception is com.ibm.db2.jcc.am.SqlSyntaxErrorException: [jcc][1091][10824][4.13.127] Invalid data conversion: Parameter instance [Ljava.lang.Object;@1dc421 is invalid for the requested conversion. ERRORCODE=-4461, SQLSTATE=42815 
    at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:95) 
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72) 
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80) 
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:605) 
    at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:818) 
    at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:874) 
    at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:882) 
    at com.ibm.quest.model.typecategory.TypeCategoryJDBCTemplate.updateTaxoActive(TypeCategoryJDBCTemplate.java:59) 
    at com.ibm.quest.taxonomyupdate.ui.ApplicationWindow.updateButtonActionPerformed(ApplicationWindow.java:255) 
    at com.ibm.quest.taxonomyupdate.ui.ApplicationWindow.access$800(ApplicationWindow.java:16) 
    at com.ibm.quest.taxonomyupdate.ui.ApplicationWindow$10.actionPerformed(ApplicationWindow.java:218) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) 
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 
    at java.awt.Component.processMouseEvent(Component.java:6505) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) 
    at java.awt.Component.processEvent(Component.java:6270) 
    at java.awt.Container.processEvent(Container.java:2229) 
    at java.awt.Component.dispatchEventImpl(Component.java:4861) 
    at java.awt.Container.dispatchEventImpl(Container.java:2287) 
    at java.awt.Component.dispatchEvent(Component.java:4687) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) 
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) 
    at java.awt.Container.dispatchEventImpl(Container.java:2273) 
    at java.awt.Window.dispatchEventImpl(Window.java:2719) 
    at java.awt.Component.dispatchEvent(Component.java:4687) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729) 
    at java.awt.EventQueue.access$200(EventQueue.java:103) 
    at java.awt.EventQueue$3.run(EventQueue.java:688) 
    at java.awt.EventQueue$3.run(EventQueue.java:686) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) 
    at java.awt.EventQueue$4.run(EventQueue.java:702) 
    at java.awt.EventQueue$4.run(EventQueue.java:700) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:699) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91) 
Caused by: com.ibm.db2.jcc.am.SqlSyntaxErrorException: [jcc][1091][10824][4.13.127] Invalid data conversion: Parameter instance [Ljava.lang.Object;@1dc421 is invalid for the requested conversion. ERRORCODE=-4461, SQLSTATE=42815 
    at com.ibm.db2.jcc.am.id.a(id.java:677) 
    at com.ibm.db2.jcc.am.id.a(id.java:60) 
    at com.ibm.db2.jcc.am.id.a(id.java:103) 
    at com.ibm.db2.jcc.am.oo.c(oo.java:2584) 
    at com.ibm.db2.jcc.am.oo.setObject(oo.java:2363) 
    at org.springframework.jdbc.core.StatementCreatorUtils.setValue(StatementCreatorUtils.java:365) 
    at org.springframework.jdbc.core.StatementCreatorUtils.setParameterValueInternal(StatementCreatorUtils.java:217) 
    at org.springframework.jdbc.core.StatementCreatorUtils.setParameterValue(StatementCreatorUtils.java:145) 
    at org.springframework.jdbc.core.ArgPreparedStatementSetter.doSetValue(ArgPreparedStatementSetter.java:65) 
    at org.springframework.jdbc.core.ArgPreparedStatementSetter.setValues(ArgPreparedStatementSetter.java:46) 
    at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:822) 
    at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:818) 
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:589) 
    ... 43 more 
+0

在SQL裝置42815 「關於 '' 替換值是無效的。」檢查http://db.apache.org/derby/docs/10.5/ref/rrefexcept71493.html檢查數據類型和傳遞的數據之間是否存在任何不匹配。 – Lakshmi 2013-03-18 06:11:57

回答

1

你拿TypeCategoryMapper做什麼?

,new TypeCategoryMapper()刪除

+0

好吧讓我試試:) – Ashish 2013-03-18 15:15:35