spring 查询出现问题 queryForMap

bjqincy 2009-04-07 04:03:31
我写了一个spring JdbcTemple

public Map<Gps, LonLat> selectLonLatByGpsId(String GpsID, String startTime,
String endTime) {

String sql = "select t.gpsid,t.x,t.y "+
"from gps_track t "+
"where t.gpsid='?' and "+
"t.gpstime>=to_date('?','yyyy-mm-dd hh24:mi:ss') "+
"and t.gpstime<=to_date('?','yyyy-mm-dd hh24:mi:ss')";
System.out.println(sql);
Object[] params = new Object[] { GpsID, startTime, endTime };
return this.getJdbcTemplate().queryForMap(sql,params);

出现错误

log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
select t.gpsid,t.x from gps_track t where t.gpsid='?' and t.gpstime>=to_date('?','yyyy-mm-dd hh24:mi:ss') and t.gpstime<=to_date('?','yyyy-mm-dd hh24:mi:ss')
Exception in thread "main" org.springframework.jdbc.InvalidResultSetAccessException: PreparedStatementCallback; invalid ResultSet access for SQL [select t.gpsid,t.x from gps_track t where t.gpsid='?' and t.gpstime>=to_date('?','yyyy-mm-dd hh24:mi:ss') and t.gpstime<=to_date('?','yyyy-mm-dd hh24:mi:ss')]; nested exception is java.sql.SQLException: 无效的列索引
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:224)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:607)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:641)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:670)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:678)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:721)
at org.springframework.jdbc.core.JdbcTemplate.queryForMap(JdbcTemplate.java:740)
at com.founder.gjfp.gis.track.impl.TrackDAO.selectLonLatByGpsId(TrackDAO.java:31)
at com.founder.gjfp.gis.track.impl.TrackDAO.main(TrackDAO.java:39)
Caused by: java.sql.SQLException: 无效的列索引
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:161)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:226)
at oracle.jdbc.driver.OraclePreparedStatement.setStringInternal(OraclePreparedStatement.java:4595)
at oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedStatement.java:4558)
at org.springframework.jdbc.core.StatementCreatorUtils.setValue(StatementCreatorUtils.java:335)
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.setValues(ArgPreparedStatementSetter.java:51)
at org.springframework.jdbc.core.JdbcTemplate$1.doInPreparedStatement(JdbcTemplate.java:646)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:591)
... 7 more

...全文
1471 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
narcissus22 2012-06-01
  • 打赏
  • 举报
回复
fosjos
正解,就是这个问题
fosjos 2009-04-09
  • 打赏
  • 举报
回复
用了?就不需要'?'
楼主多看看别人怎么用的
Rooock 2009-04-08
  • 打赏
  • 举报
回复
Caused by: java.sql.SQLException: 无效的列索引

你的SQL写错了吧.
比如select x from mytable; // 这个x是无效的.

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧