在使用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;  
}

你若安好便是晴天
82 声望10 粉丝