oracle数据库用的是9i.
 
 
org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [insert into make_si_card_detail (biz_serial,dept_id,collection_point_no,collection_point_name,initialization_dept_id,card_distribute_date,card_valid_date,si_card_no,si_no,person_name,gender,nation_id,birthday,hukou_address,hukou_type,photo_string,bank_id,bank_card_no,response_si_flag,source)values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)]; SQL state [null]; error code [17410]; 无法从套接字读取更多的数据; nested exception is java.sql.SQLException: 无法从套接字读取更多的数据 Caused by: java.sql.SQLException: 无法从套接字读取更多的数据 at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179) at oracle.jdbc.dbaccess.DBError.check_error(DBError.java:1160) at oracle.jdbc.ttc7.MAREngine.unmarshalUB1(MAREngine.java:963) at oracle.jdbc.ttc7.MAREngine.unmarshalSB1(MAREngine.java:893) at oracle.jdbc.ttc7.v8TTILob.receiveReply(v8TTILob.java:955) at oracle.jdbc.ttc7.v8TTIClob.createTemporaryLob(v8TTIClob.java:394) at oracle.jdbc.ttc7.TTC7Protocol.createTemporaryLob(TTC7Protocol.java:3173) at oracle.sql.LobDBAccessImpl.createTemporaryClob(LobDBAccessImpl.java:723) at oracle.sql.CLOB.createTemporary(CLOB.java:961) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.jdbc.support.lob.OracleLobHandler$OracleLobCreator.prepareLob(OracleLobHandler.java:393) at org.springframework.jdbc.support.lob.OracleLobHandler$OracleLobCreator.createLob(OracleLobHandler.java:340) at org.springframework.jdbc.support.lob.OracleLobHandler$OracleLobCreator.setClobAsString(OracleLobHandler.java:265) at com.rx.app.jdbcdao.MqBatchRequestDaoImpl$7.setValues(MqBatchRequestDaoImpl.java:351) at org.springframework.jdbc.core.JdbcTemplate$4.doInPreparedStatement(JdbcTemplate.java:817) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:527) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:556) at org.springframework.jdbc.core.JdbcTemplate.batchUpdate(JdbcTemplate.java:808) at com.rx.app.jdbcdao.MqBatchRequestDaoImpl.saveMakeSiCardDetail(MqBatchRequestDaoImpl.java:329) at com.rx.app.mqbatch.MqBatchRequestHandler.checkAndSvaeMakeSiCardTrans(MqBatchRequestHandler.java:198) at com.rx.app.mqbatch.MqBatchRequestHandler.makeSiCardTrans(MqBatchRequestHandler.java:83) at com.rx.app.mqbatch.MqBatchConnection.run(MqBatchConnection.java:102)
		StringBuffer sql_save_card_detail = new StringBuffer(128);
		sql_save_card_detail.append("insert into make_si_card_detail (biz_serial,dept_id,collection_point_no,");
		sql_save_card_detail.append("collection_point_name,initialization_dept_id,card_distribute_date,card_valid_date,");
		sql_save_card_detail.append("si_card_no,si_no,person_name,gender,nation_id,birthday,hukou_address,hukou_type,");
		sql_save_card_detail.append("photo_string,bank_id,bank_card_no,response_si_flag,source)");
		sql_save_card_detail.append("values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
		getJdbcTemplate().batchUpdate(sql_save_card_detail.toString(), new BatchPreparedStatementSetter()
		{
			public void setValues(PreparedStatement ps, int i) throws SQLException
			{
				MakeSICardDetail detail = makeSICardDetailList.get(i);
				int j = 1;
				ps.setString(j++, detail.getBizSerial());
				ps.setString(j++, detail.getDeptId());
				ps.setString(j++, detail.getCollectionPointNo());
				ps.setString(j++, detail.getCollectionPointName());
				ps.setString(j++, detail.getInitializationDeptId());
				ps.setString(j++, detail.getCardDistributeDate());
				ps.setString(j++, detail.getCardValidDate());
				ps.setString(j++, detail.getSiCardNo());
				ps.setString(j++, detail.getSiNo());
				ps.setString(j++, detail.getPersonName());
				ps.setString(j++, detail.getGender());
				ps.setString(j++, detail.getNationId());
				ps.setString(j++, detail.getBirthday());
				ps.setString(j++, detail.getHukouAddress());
				ps.setString(j++, detail.getHukouType());
				//TODO
				lobHandler.getLobCreator().setClobAsString(ps, j++,"222222");
				ps.setString(j++, detail.getBankId());
				ps.setString(j++, detail.getBankCardNo());
				ps.setInt(j++, detail.getResponseSiFlag());
				ps.setString(j++, detail.getSource());
			}
			public int getBatchSize()
			{
				return makeSICardDetailList.size();
			}
		});
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这个字符直接用text就行,没必要用clob回复<aclass='referer'target='_blank'>@记忆的美好:odbc14.jar这个版本低不?我用这个也报这个错误,请问大侠是怎么解决的啊感谢你的回答.我找出原因了...是ojdbc的jar包版本太低,导致这个异常....存的应该是照片的base64字符串,测试的时候我改成"2222222"...方便排错的