Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring在解析数据库中的数据时返回NullPointerException_Java_Spring_Spring Jdbc - Fatal编程技术网

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")