2013-04-03 3 views
1

Это мое первое сообщение, поэтому, пожалуйста, будьте терпеливы. Я работаю над проектом java и подключается к базе данных sql. В настоящее время я пытаюсь сделать это, когда я нажимаю кнопку, будет отображать имя элемента и цену элемента с указанным ID в текстовой области из моей базы данных. Однако, когда я нажимаю кнопку ошибку, например, как это выглядит:java.lang.NullPointerException и ResultSet

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. Я надеюсь, кто-то может помочь мне исправить эту проблему. Заранее спасибо.

+1

Что такое переменная 'st'? Скорее всего, вы не инициализируете его. –

+1

Я предполагаю, что ваша ссылка 'st' не инициализирована. –

+0

Я удивлен, что вы на самом деле добрались до этого, не зная, что вызывает непонимание. –

ответ

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(); 
     } 
}); 
1

Похоже, что st is null. В вашем примере не указано, где st объявлено, а тем более инициализировано.

Вы, вероятно, нужно создать заявление от вашего запроса (это просто строка)

1
st

является null. Вам нужно что-то вроде

con.prepareStatement(query); 

Где con является подключение к базе данных SQL. Вы не показываете, как вы подключаетесь к базе данных здесь. Here's a good tutorial on how to do that.

1

Он похож, что ЗБ нулевой .please проверяют ваш ул иначе писать код

conn.prepareStatement(query)