gpt4 book ai didi

mysql - jdbcTemplate 传入空值

转载 作者:太空宇宙 更新时间:2023-11-03 11:58:10 26 4
gpt4 key购买 nike

我正在使用 mysql 和 spring 4.1.6,但是在向数据库发送空变量时遇到了问题。我知道发送一个空值使用语法 IS NULL 但发送到数据库的字段是可选的(整个对象中唯一的可选值),因此它可能为空或可能有一个值。

我对数据库的请求通过 CRUD 方法简单地检查地址是否存在:

注意:有问题的变量是street2

public boolean doesExist(Address address){
String sql = "SELECT EXISTS(SELECT * FROM Address WHERE contactType=? AND street1=? AND street2 ? AND city=? AND state=? AND zip=? AND country=?);";

String s = isNullDBQuery(address.getStreet2());

jdbcTemplate = new JdbcTemplate(dataSource);
int exist = jdbcTemplate.queryForObject(sql, new Object[] {address.getContactType().name(), address.getStreet1(), isNullDBQuery(address.getStreet2()), address.getCity(), address.getState().name(), address.getZip(), address.getCountry().name()}, Integer.class);

if(exist == 1){
return true;
} else {
return false;
}
}

我的 isNullDBQuery:

private String isNullDBQuery(String s){
if(s == null){
return "IS NULL";
} else {
return "=" + s;
}
}

返回的错误是“IS NULL”的语法错误。发送到数据库的查询是 street2 'IS NULL' 而不是 street2 IS NULL。是否可以去掉我请求中的单引号?或者有更好的方法吗?

感谢任何帮助

最佳答案

没有。只有值可以作为准备语句的参数传递。不是查询的任意部分。

您需要使用两个不同的 SQL 查询(或根据 street2 的空性动态生成它)。

关于mysql - jdbcTemplate 传入空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30987660/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com