我在一个非常简单的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
问题:
知道发生了什么事吗?任何解决方案?
由于
答案 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++;
}
}