我有一個用 Java 撰寫的 SQL 查詢,如下所示:
public void getTransactionHistoryTest(String userId) {
String q = "SELECT * FROM \"TEST\".\"PUBLIC\".\"USER_TABLE\" WHERE \"ID\"='{userId}'";
return jdbcTemplate.query(query, rs -> {
}, userId);
}
我在 Snowflake 中有一張表,其中UserID型別為NUMBER,并且出現下一個錯誤:
無法識別數值“{userId}”
為了解決這個問題,我試圖轉換String userId成int這樣:
int userId= Integer.parseInt(id);
但我仍然遇到同樣的錯誤。
是否可以將String值發送到int并仍然使其在 Snowflake 中作業?
uj5u.com熱心網友回復:
嘗試使用 ? 字符而不是“{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/
另一種嘗試方法:
String sql = "SELECT * FROM \"TEST\".\"PUBLIC\".\"USER_TABLE\" WHERE \"ID\" = ?";
jdbcTemplate.query(sql,
new Object[] { userId },
new int[] { Types.INTEGER },
ROW_MAPPER);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/339072.html
上一篇:如何擺脫實際上“重復”的幾乎相同的行,并且實際上只切換了某些列資料?
下一篇:如何按同一日期的結果分組
