【问题标题】:null pointer exception java [duplicate]空指针异常java [重复]
【发布时间】:2014-04-21 01:26:06
【问题描述】:

我是新手,所以请耐心等待。但我在这里某处得到了NullPointerException。有任何想法吗?谢谢!

private  void loadInstructors()
{
  // get all account numbers from database
  try 
  {
    //myResultSet = myStatement.executeQuery( "SELECT DISTINCT lastname FROM InstEval" );
    myResultSet = myStatement.executeQuery( "SELECT DISTINCT TEAMNAME FROM APP.TEAMEVAL" );
    // add account numbers to accountNumberJComboBox
    while ( myResultSet.next() )
    {
      //instructorComboBox.addItem( myResultSet.getString( "lastname" ) );
      TeamsComboBox.addItem( myResultSet.getString( "TEAMNAME" ) );
    }
    myResultSet.close(); // close myResultSet
  } // end try
  catch ( SQLException exception )
  {
    exception.printStackTrace();
  }
}

【问题讨论】:

  • NPE 应该伴随着一个 stack-trace,包含行号。它对应于代码中的哪一行?
  • 您需要告诉我们 NPE 发生在哪里。更好的是,请使用调试器。
  • 不应该是while (myResultSet.hasNext())吗?
  • 根据这段代码我猜你没有实例化myStatement 但是当然没有堆栈跟踪这只是一个猜测。
  • 你的代码调试了吗?

标签: java nullpointerexception null


【解决方案1】:

这是做你想做的事的一种方法;请注意,我试图在这里概括一些事情。首先,您应该使用描述性的方法名称(如果您想要团队名称,请提及团队名称)。其次,您应该返回适​​当的类型(并且您正在执行不同的查询),因此我们应该返回Set - 我选择了一个排序集,但这并不是强制性的。接下来,我选择将Connection 对象传递给方法。关闭打开它们的块中的资源是个好主意,因此我只关闭PreparedStatement 和ResultSet 对象。最后,如果你不让你的 cmets 更新你的代码,那它们就更糟了。

// I think sorting the team names is good idea, and they're distinct...
private SortedSet<String> getTeamNames(Connection conn) {
  // Let's use a Set!
  SortedSet<String> teamNames = new TreeSet<String>();
  // get all team names from database, at least store the query in a local 
  // String variable. You should probably extract it to a properties file.
  final String query = "SELECT DISTINCT TEAMNAME FROM APP.TEAMEVAL";
  PreparedStatement ps = null;
  ResultSet rs = null;
  try {
    ps = conn.prepareStatement(query);
    rs = ps.executeQuery();
    // add team names to teamNames
    while (rs.next()) {
      teamNames.add(rs.getString("TEAMNAME"));
    }
  } catch (SQLException e) {
    e.printStackTrace();
  } finally {
    if (rs != null) {
      try {
        rs.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
    if (ps != null) {
      try {
        ps.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
  }
  return teamNames;
}

【讨论】:

  • 谢谢!很抱歉问,但是当调用 getTeamNames() 时,它在 parn 中寻找什么?
  • @user3549412 参数?你的意思是java.sql.Connection?
  • 我认为这是通过 java.sql.* 工作的;进口?
猜你喜欢
  • 2016-04-28
  • 1970-01-01
  • 1970-01-01
  • 2014-03-03
  • 1970-01-01
  • 2014-02-04
相关资源
最近更新 更多