java.lang.NullPointerException和ResultSet

时间:2013-04-03 17:45:47

标签: java sql actionlistener resultset

这是我的第一篇文章,请耐心等待。我正在研究一个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声明的行。我希望有人可以帮我解决这个问题。提前谢谢。

4 个答案:

答案 0 :(得分:2)

stnull。你需要像

这样的东西
con.prepareStatement(query);

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

答案 1 :(得分:2)

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

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 :(得分:1)

看起来st是null。您的示例不会显示声明st的位置,更不用说初始化。

您可能需要从查询中创建一个Statement(这只是一个字符串)

答案 3 :(得分:1)

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

conn.prepareStatement(query)