【问题标题】:java.lang.NullPointerException and ResultSetjava.lang.NullPointerException 和 ResultSet
【发布时间】:2013-04-03 17:45:46
【问题描述】:

这是我的第一篇文章,所以请耐心等待。我正在开发一个 java 项目并连接到一个 sql 数据库。我目前正在尝试做的是,当我单击一个按钮时,将在我的数据库的文本区域中显示项目的名称和具有指定 ID 的项目的价格。但是,当我单击按钮时,会出现如下错误:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at OrderFrame.waterButtonActionPerformed(OrderFrame.java:494)
at OrderFrame.access$000(OrderFrame.java:11)

这是我的 waterButtonActionPerformed 的代码:

private void waterButtonActionPerformed(java.awt.event.ActionEvent evt) {                                            
// TODO add your handling code here:
    try{

    String query;
    query = "SELECT itemName, itemPrice FROM item WHERE itemID = '11111'";
    String itemName = " ",itemPrice =" ";  

      ***ResultSet rs = st.executeQuery(query);***

       if(rs != null){
        while(rs.next())
        { 
         itemName = rs.getString(1);
         itemPrice = rs.getString(2);
        }
       orderTextArea.setText(itemName);
       orderTextArea.setText(itemPrice);
       }
         } catch (SQLException ex) {}
}        

第 494 行是带有 ResultSet 声明的行。我希望有人能帮我解决这个问题。提前谢谢你。

【问题讨论】:

  • 什么是变量st?很可能,您没有初始化它。
  • 我假设您的 st 引用未初始化。
  • 我很惊讶你居然能走到这一步,却不知道是什么导致了空指针异常。

标签: java sql actionlistener resultset


【解决方案1】:

重写处理程序,如下所示:

waterButton.addActionListener(new ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {                                            
// TODO add your handling code here:
    try{
       Statement st = connectionObject.createStatement();

       // might want to use placeholders here as well
       String query= "SELECT itemName, itemPrice FROM item WHERE itemID = '11111'"; 
       String itemName = " ",itemPrice =" ";  

       ResultSet rs = st.executeQuery(query);

       if(rs != null){
         do { 
           itemName = rs.getString(1);
           itemPrice = rs.getString(2);
        } while (rs.next());
        orderTextArea.setText(itemName);
        orderTextArea.setText(itemPrice);
        }
      } catch (SQLException ex) { 
         System.err.println(new java.util.Date()+" : "+ex.getMessage(); 
      }
});

【讨论】:

    【解决方案2】:

    stnull。你需要类似的东西

    con.prepareStatement(query);
    

    con 是您与 SQL 数据库的连接。您没有在这里显示如何连接到数据库。 Here's a good tutorial on how to do that.

    【讨论】:

      【解决方案3】:

      看起来 st 为空。您的示例没有显示 st 的声明位置,更不用说初始化了。

      您可能需要根据您的查询创建一个语句(这只是一个字符串)

      【讨论】:

        【解决方案4】:

        看起来st是空的。请检查你的st否则写代码

        conn.prepareStatement(query)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-05-03
          • 2013-10-08
          • 2010-11-13
          • 1970-01-01
          • 2017-08-07
          • 1970-01-01
          • 2014-03-12
          • 2014-10-24
          相关资源
          最近更新 更多