2016-08-23 113 views
1

我想通過JDBC API和Spring的NamedParameterJdbcTemplate對SnappyData行表執行UPDATE。無法執行NamedParameterJdbcTemplate更新

錯誤是:

引起:java.sql.SQLException中:(SQLSTATE = XCL14嚴重性= 20000)的列位置 '1' 超出範圍。此ResultSet的列數爲'0'。 at com.pivotal.gemfirexd.internal.shared.common.error.DefaultExceptionFactory40.getSQLException(DefaultExceptionFactory40.java:121) at com.pivotal.gemfirexd.internal.shared.common.error.ExceptionUtil.newSQLException(ExceptionUtil.java :148) at com.pivotal.gemfirexd.internal.client.am.SqlException.getSQLException(SqlException.java:419) at com.pivotal.gemfirexd.internal.client.am.ColumnMetaData.getColumnType(ColumnMetaData.java:644 ) 在com.pivotal.gemfirexd.internal.client.am.PreparedStatement.setString(PreparedStatement.java:1203) 在com.zaxxer.hikari.pool.HikariProxyPreparedStatement.setString(HikariProxyPreparedStatement.java) 在org.springframework.jdbc .core.StatementCreatorUtils.setValue(StatementCreatorUtils.java:429) 在org.springframework.jdbc.core.StatementCreatorUtils.setParameterValueInternal(StatementCreatorUtils.java:235) 在org.springframework.jdbc.core.StatementCreatorUtils.setParameterValue(StatementCreatorUtils.java:150) 在org.springframework.jdbc.core。 PreparedStatementCreatorFactory $ PreparedStatementCreatorImpl.setValues(PreparedStatementCreatorFactory.java:292) 在org.springframework.jdbc.core.PreparedStatementCreatorFactory $ PreparedStatementCreatorImpl.createPreparedStatement(PreparedStatementCreatorFactory.java:244) 在org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate的。 java:623) ... 70更多 錯誤XCL14:列位置'1'超出範圍。此ResultSet的列數爲'0'。 在com.pivotal.gemfirexd.internal.client.am.ColumnMetaData.checkForValidColumnIndex(ColumnMetaData.java:856) 在com.pivotal.gemfirexd.internal.client.am.ColumnMetaData.getColumnType(ColumnMetaData.java:638)

的NamedParameter SQL看起來是這樣的:

UPDATE generic_table_10 SET(VERSION =:版本,FK_1 =:FK,COL_1 =:COL1,COL_2 =:COL2,COL_3 =:COL3,COL_4 =:COL4,COL_5 =: col5,COL_6 =:col6,COL_7 = col7,col_8 = col8,col_9 = col9,col_10 = col10)

注意:VERSION列的類型是整數。所有其餘的列類型都是String。

的SQL看起來是這樣的,這似乎是正常的對我說:??????

UPDATE generic_table_10 SET(VERSION =,FK_1 =,COL_1 =,COL_2 =,COL_3 =,COL_4 =,COL_5 = (ID =?和版本=?)

回答

0

我自己解決了這個問題......語法不好。我刪除了括號,現在它可以工作。現在這裏是SQL:

UPDATE generic_table_10 SET VERSION =?,FK_1 =? ,COL_1 =?,COL_2 =?,COL_3 =?,COL_4 =?,COL_5 =?,COL_6 =?,COL_7 =?,COL_8 =?,COL_9 =?,COL_10 =? WHERE ID =?和VERSION =?

我必須說,儘管我缺乏SQL語法技巧,但錯誤信息有點讓人誤解!