当前位置: 首页 > 知识库问答 >
问题:

无法识别数值“{userId}”

宗翔宇
2023-03-14

我有一个用Java编写的SQL查询,如下所示:

public void getTransactionHistoryTest(String userId) {
     String q = "SELECT * FROM \"TEST\".\"PUBLIC\".\"USER_TABLE\" WHERE \"ID\"='{userId}'";
     return  jdbcTemplate.query(query, rs -> {
    }, userId);
    }
int userId= Integer.parseInt(id);

是否可以发送string值,将其转换为int,并使其在雪花中工作?

共有1个答案

濮宇定
2023-03-14

试着用?字符而不是“{userId}”

public List<TransactionHistory> getTransactionHistoryTest(String userId) {
 String q = "SELECT * FROM \"TEST\".\"PUBLIC\".\"USER_TABLE\" WHERE \"ID\"=?";
 return jdbcTemplate.query(q, ROW_MAPPER, userId);
}

您的问题不是由用户Id的值引起的,而是由参数的错误转义引起的。在您的情况下,您不需要命名参数-所以只是?会起作用的。否则使用命名参数模板。请参阅更多示例,例如https://javabydeveloper.com/spring-jdbctemplate-query-examples/

 类似资料:
  • 我已经检查并删除了查询的各个部分,试图隔离它来自哪里。经过几个小时和削减每一栏,它仍然在发生。 有人知道雪花诊断查询(像Redshift有)可以告诉我问题发生的特定列吗?

  • 无法识别数值“ABC_0011O00001Y31VPQAI” 检查表DDL,发现只有3列定义为NUMBER,而rest定义为VARCHAR。 我检查了SELECT查询,在这些NUMBER Datatype列中没有找到任何字符串值。我还尝试在所有Varchar列中搜索值'ABC_0011O00001Y31VPQAI',但没有找到任何 我知道一件事,雪花并不总是显示正确的错误。我是不是漏掉了什么?有什

  • 我试图从我的jar启动另一个Java进程,我使用的是ProcessBuilder: 错误:无法创建Java虚拟机。错误:发生致命异常。程序将退出。无法识别的选项:-类路径“C:\absoulte\path\library.jar;C:\absoulte\path2\library2.jar;C:\absoulte\path3\library3.jar”

  • 我有一个与cassandra连接的springboot应用程序。我试图在地图中创建地图,但遇到以下异常。在我看来,即使我使用了冻结值,它仍在发送cal,但没有关键字冻结 错误 代码 马文

  • 我有以下序列

  • 我不确定这是否是一个与我没有这台计算机的管理权限有关的问题。任何帮助,以便我可以进一步排除故障,将非常感谢! 谢谢