在使用jdbc执行sql时候,在finally语句块中return null,导致接收值一直为null。
解决方法1:在finally中返回结果
Message message = null;
try (Connection conn = dataSource.getConnection()) {
try (PreparedStatement stmt = conn.prepareStatement(QUERY\_MESSAGE\_SQL)) {
stmt.setString(1,language);
stmt.setString(2,key);
ResultSet rs = null;
try {
rs = stmt.executeQuery();
if (rs.next()){
String baseName = rs.getString("base\_name");
String lan = rs.getString("lan");
String k = rs.getString("k");
String v = rs.getString("v");
return message = Message.builder().basename(baseName)
.language(lan)
.key(k)
.value(v)
.build();
}
}catch (SQLException e){
log.debug(e.getMessage(),e);
}finally {
if (null != rs){
rs.close();
}
}
}
} catch (SQLException e) {
log.debug(e.getMessage(), e);
}finally {
return message;
}
解决方法2:
省略finally语句块
try (Connection conn = dataSource.getConnection()) {
try (PreparedStatement stmt = conn.prepareStatement(QUERY\_MESSAGE\_SQL)) {
stmt.setString(1,language);
stmt.setString(2,key);
try(ResultSet rs = stmt.executeQuery()) {
if (rs.next()){
String baseName = rs.getString("base\_name");
String lan = rs.getString("lan");
String k = rs.getString("k");
String v = rs.getString("v");
return Message.builder().basename(baseName)
.language(lan)
.key(k)
.value(v)
.build();
}else {
return null;
}
}catch (SQLException e){
log.debug(e.getMessage(),e);
return null;
}
}
} catch (SQLException e) {
log.debug(e.getMessage(), e);
return null;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。