3

这是我的第一篇文章,所以请耐心等待。我正在开发一个 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

4 回答 4

2

stnull。你需要类似的东西

con.prepareStatement(query);

con您与 SQL 数据库的连接在哪里。您没有在这里显示如何连接到数据库。这是一个关于如何做到这一点的好教程。

于 2013-04-03T17:51:51.887 回答
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(); 
      }
});
于 2013-04-03T17:55:32.837 回答
1

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

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

于 2013-04-03T17:49:48.800 回答
1

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

conn.prepareStatement(query)
于 2013-04-03T17:55:04.057 回答