SqlRowSet.getString报错java.lang.NullPointerException
时间: 2023-11-28 22:45:36 浏览: 46
根据提供的引用内容,SqlRowSet.getString()方法报错java.lang.NullPointerException可能是由于返回的结果集中包含了null值,而在调用getString()方法时没有进行null值的判断导致的。解决这个问题的方法是在调用getString()方法之前,先判断该列是否为null,例如:
```java
if (rowSet.wasNull() || rowSet.getString("columnName") == null) {
// 处理null值的情况
} else {
String value = rowSet.getString("columnName");
// 处理非null值的情况
}
```
相关问题
org.springframework.jdbc.support.rowset.SqlRowSet关闭
在使用 Spring JDBC 操作数据库时,SqlRowSet 是 Spring JDBC 提供的一种方便的处理查询结果集的方式。SqlRowSet 接口实现了 ResultSet 接口,但 SqlRowSet 对象不需要显式地关闭,因为 Spring JDBC 会自动关闭它。
在使用 SqlRowSet 时,我们可以使用 try-with-resources 语句来自动关闭 SqlRowSet 对象和相关的资源,例如:
```
try (SqlRowSet rowSet = jdbcTemplate.queryForRowSet(sql)) {
// 操作 SqlRowSet 对象
}
```
在 try-with-resources 语句中,当代码块执行完毕时,SqlRowSet 对象会自动调用 close() 方法关闭。如果不使用 try-with-resources 语句,可以在 finally 语句块中手动关闭 SqlRowSet 对象,例如:
```
SqlRowSet rowSet = null;
try {
rowSet = jdbcTemplate.queryForRowSet(sql);
// 操作 SqlRowSet 对象
} finally {
if (rowSet != null) {
rowSet.close();
}
}
```
//判断字段是否存在 MetaFieldInfo metaFieldInfo = metaFieldInfoRepository.findByFieldId(fieldId); if (metaFieldInfo == null) { LOG.error("通过SQL插入字典值错误:该字段不存在"); return null; } //如果有则视为更新,先删除再插入 List<MetaFieldValueDic> metaFieldValueDics = metaFieldValueDicRepository.findAllByFieldId(fieldId); if (metaFieldValueDics.size() > 0) { metaFieldValueDicRepository.deleteAllByFieldId(fieldId); } //插入字典 String st = sql.replaceAll("'", "''"); SqlRowSet res = greenplumJdbcTemplate.queryForRowSet(sql); System.out.println(res); int columnCount = res.getMetaData().getColumnCount(); if (columnCount != 2) { LOG.error("通过SQL插入字典值错误:SQL查询结果列数不为2"); return null; } while (res.next()) { //判断是否已存在该key值 MetaFieldValueDic fieldValueDicOld = metaFieldValueDicRepository.findMetaFieldValueDicByFieldIdAndFieldValue(fieldId, res.getString(1)); if (fieldValueDicOld != null) { throw new Exception("新增字典异常:字典值已存在"); }
这段代码继续对参数进行判断,判断字段是否存在,如果不存在则会抛出异常并返回null。如果字段存在,则会将该字段下的所有字典值全部删除。然后执行SQL插入字典值操作,并对SQL查询结果的列数进行判断,如果不为2则会抛出异常并返回null。接着遍历结果集,判断是否已存在该key值,如果已存在则会抛出异常并返回null。这些操作都是为了保证插入的字典值合法、唯一性,以保证系统正常运行。您还有其他问题吗?
相关推荐
![application/octet-stream](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)