如何通过将参数传递给查询来获取函数的值

问题描述

 StringBuilder query = new StringBuilder();

  query.append("SELECT * from Demography Demo")
  .append(" WHERE Demo.Roll IN ( '5','1') AND DemoVer.Roll is null ")
  .append(" AND date(Demo.Updt) between ")
  .append("date('").append("?").append("') AND  CURRENT DATE-100 DAY");

  final Object[] args = new Object[]{getVal()};

  result = jdbcTemplate.query(query,args,new Mapper());

生成查询显示“?”仅代替函数中的值

编辑1:它仍然显示吗?而不是价值。我不确定执行查询代码是否正确。

query.append("SELECT * from Demography Demo")
  .append(" WHERE Demo.Roll IN ( '5','1') AND DemoVer.Roll is null ")
  .append(" AND date(Demo.Updt) between ")
  .append(" timestamp(?)").append(" AND CURRENT DATE-100 DAY");

  final Object[] args = new Object[] {
        getVal() 
    } ; //its returning '2020-09-01 03:00:00'
    int[] types = new int[] { Types.CHAR  };
    List<Record> result = null;  
    result = jdbcTemplate.query(query,types,new Mapper());

生成查询-

SELECT * from Demography Demo WHERE Demo.Roll IN ( '5','1') AND DemoVer.Roll is null 
   AND date(Demo.Updt) between
   timestamp(?) AND CURRENT DATE-100 DAY

预期查询-

SELECT * from Demography Demo WHERE Demo.Roll IN ( '5','1') AND DemoVer.Roll is null 
   AND date(Demo.Updt) between
   timestamp('2020-09-01 03:00:00') AND CURRENT DATE-100 DAY

错误

org.springframework.jdbc.BadsqlGrammarException: PreparedStatementCallback; bad sql grammar; nested exception is com.ibm.db2.jcc.am.sqlSyntaxErrorException: DB2 sql Error: sqlCODE=-418,sqlSTATE=42610,sqlERRMC=null,DRIVER=4.19.66

完整StackTrace:

nested exception is com.ibm.db2.jcc.am.sqlSyntaxErrorException: DB2 sql Error: sqlCODE=-418,DRIVER=4.19.66
at org.springframework.jdbc.support.sqlExceptionSubclasstranslator.doTranslate(sqlExceptionSubclasstranslator.java:93) ~[spring-jdbc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.jdbc.support.AbstractFallbacksqlExceptionTranslator.translate(AbstractFallbacksqlExceptionTranslator.java:72) ~[spring-jdbc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.jdbc.support.AbstractFallbacksqlExceptionTranslator.translate(AbstractFallbacksqlExceptionTranslator.java:81) ~[spring-jdbc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1444) ~[spring-jdbc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:632) ~[spring-jdbc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:669) ~[spring-jdbc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:700) ~[spring-jdbc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:706) ~[spring-jdbc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:758) ~[spring-jdbc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at com.optum.chy.component.DB2Service.selectData(DB2Service.java:278) ~[classes/:na]

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)