Java Spring在解析数据库中的数据时返回NullPointerException
我有一个代码片段Java Spring在解析数据库中的数据时返回NullPointerException,java,spring,spring-jdbc,Java,Spring,Spring Jdbc,我有一个代码片段 String sql = "SELECT * FROM merchantlist ORDER BY TransactionCount DESC LIMIT 10"; Connection conn = null; try { List<String> merchantList = null; conn = dataSource.getConnection(); PreparedStatement ps
String sql = "SELECT * FROM merchantlist ORDER BY TransactionCount DESC LIMIT 10";
Connection conn = null;
try {
List<String> merchantList = null;
conn = dataSource.getConnection();
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
merchantList.add(new String(rs.getString("MerchantName")));
}
rs.close();
ps.close();
return new TopMerchants(merchantList);
} catch (SQLException e) {
throw new RuntimeException(e);
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {}
}
}
}
当我运行存储过程时,我得到两行作为输出。数据类型配置正确(MerchantName列为VARCHAR(20))
如何解决此问题?我试图将其置于调试模式,但在ResultSet中看不到值。使用
新建创建字符串无法解决问题。因为,它并没有导致NullPointerException
,而是在代码行下面
List<String> merchantList = null;
在代码merchantList
的上面一行,仍然指向null
引用。因此,在使用ArrayList之前,需要创建ArrayList的实例
List<String> merchantList = new ArrayList<>();
到
因为不需要创建新的字符串对象。@Ravi更改了代码以创建新的字符串对象,但没有工作。@Prateek Narendra您需要将if
更改为while
。因为if
将只执行一次,并且是在它获得true
时第一次执行。
if (rs.next()) {
merchantList.add(new String(rs.getString("MerchantName")));
}
List<String> merchantList = new ArrayList<>();
new String(rs.getString("MerchantName"))
rs.getString("MerchantName")