简体   繁体   English

如何处理Java表列中的空值?

[英]How to deal with null value in table column in java?

I am getting null pointer exception again and again while getting value from database table.....why its giving me null pointer exception? 从数据库表获取值时,我一次又一次收到空指针异常.....为什么它给了我空指针异常?

Here is my code : 这是我的代码:

private HashSet getPlayerList() {
        HashSet hs = new HashSet();
        String soccername = "";
        try {
            conn = ConnectionProvider.getConnection();
            rs = null;
            pstmt = null;
            String sql = "Select * from Players where deleted = false";

            if (conn != null) {
                pstmt = conn.prepareStatement(sql);
                rs = pstmt.executeQuery();

                while (rs.next()) {
                    soccername = rs.getString("soccername").trim();// this line giving exception
                    if (soccername == null || soccername.isEmpty()) {
                        soccername = rs.getString("name").trim();
                    }
                    hs.add(soccername);
                }
            }
        } catch (NamingException ex) {
            System.out.println(ex);
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pstmt.close();
                rs.close();
                conn.close();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        return hs;
   }

that is wrong: 那是错的:

soccername = rs.getString("soccername").trim();// this line giving exception
if (soccername == null || soccername.isEmpty()) {

if rs.getString("soccername") returns null it must leads to a NPE because it is followed by the function trim() . 如果rs.getString("soccername")返回null,则必须导致NPE,因为它后面是函数trim()

better is: 更好的是:

soccername = rs.getString("soccername");
if (soccername == null || soccername.trim().isEmpty()) {

It should be: 它应该是:

soccername = rs.getString("soccername");
if (soccername == null || soccername.isEmpty()) {
    soccername = rs.getString("name").trim();
} else {
    //now you are sure that soccername is not null
    soccername = soccername.trim();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM