结果集返回空值

时间:2012-10-02 04:53:29

标签: java mysql database

我在一个非常简单的SELECT查询中检索时遇到了麻烦。 我正在尝试从表'db_con_type'中检索所有信息,并将它们放在dbChoices的数组字符串中。

数据库:

Select查询在报表设计器中工作正常。抱歉,我不能上传图片,因为我是新来的。

代码:

public void setDbTypeChoices()
    {
       try
        {
            con2db connect2db = new con2db();
            con = connect2db.aksesDatabase();
            stmt = con.createStatement();
            String sql = "SELECT * FROM db_con_type";

            rs = stmt.executeQuery(sql);

            int i = 0;
            while(rs.next())
            {
                this.dbChoices[i] = rs.getString("DB_Type");
                i++;
            }

            rs.close();
            stmt.close();
            ps.close();
            con.close();

            //Close Connection
            connect2db.tutupKoneksi();
        }
       catch(Exception e)
       {
           System.out.println("SQL ERROR 1 = " + e.getMessage());
           System.out.println("SQL ERROR 2 = " + e.toString());
       }
    }

错误:

SQL ERROR 1 = null

SQL ERROR 2 = java.lang.NullPointerException

问题:

知道发生了什么事吗?任何解决方案?

由于

2 个答案:

答案 0 :(得分:0)

发现问题。这是因为ps.close()代码..

因为我不在这里使用它,但我关闭它并且它出现问题..

感谢Luiggi的printStackTrace创意。 谢谢你的所有答案。我真的很感激..:D

答案 1 :(得分:0)

顺便说一下,如果您正在处理ResultSet,首先检查返回的结果集是否为空,然后再对其进行操作,这是一个很好的做法。如果rs.next()rs,则null将为您提供NPE。

if(rs != null) {
    while(rs.next()) {
        this.dbChoices[i] = rs.getString("DB_Type");
        i++;
    }
}