2013-12-07 3 views
1

Публикация в первый раз, надеясь на помощь. Я прошел через все подобные публикации на этом форуме ... и считаю, что код был правильным, однако он продолжает возвращать исключение nullpointerException. Программа представляет собой простую базу данных сотрудников, в которую входят сведения о сотрудниках вместе с изображением. Это прекрасно работает, не может вставить изображение в поле blob в mySql. Однако я просто не могу получить и отобразить в JLabel.Не удается получить данные о блобе и отобразить их в JLabel- mySql

Следующий код является заключительной частью программы, где пользователь может просто вставить имя сотрудника для получения всех деталей. функция поиска выглядит следующим образом:

void search(){ 
    try { 
     st = cn.createStatement(); 
     byte[] imageBytes; 
     Image image; 
     ResultSet rs=st.executeQuery("SELECT * FROM info WHERE pname='"+ txtSearch.getText() + "'"); 


     if(rs.next()){ 
      txtName.setText(rs.getString("Pname").toString()); 
      if (rs.getString("sex").toString().equals("Male")){ 
       cboGender.setSelectedIndex(0); 
      }else{ 
       cboGender.setSelectedIndex(1); 
      } 

      txtAddress.setText(rs.getString("address").toString()); 
      txtPosition.setText(rs.getString("position").toString()); 
      txtSecurityLvl.setText(rs.getString("security").toString()); 

      try { 
       String sql = ("select photograph from info where pname ='" + txtSearch.getText() + "'"); 
       ps = cn.prepareStatement(sql); 
       rs = ps.executeQuery(); 

       if (rs.next()) { 
        byte[] imagedata= rs.getBytes("photograph"); 
        format=new ImageIcon(imagedata); 
        picLabel2.setIcon(format); 

       } 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

      /* 
      try { 
       BufferedImage img = ImageIO.read(rs.getBinaryStream("photograph")); 
       picLabel.setIcon(new ImageIcon(img)); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 


      //picLabel.setIcon(new ImageIcon(ByteStreams.toByteArray(Blob.getBinaryStream()))); 
      */ 



     }else{ 

      JOptionPane.showMessageDialog(null,"Not Found",null, JOptionPane.INFORMATION_MESSAGE, null);  
     } 

    } catch (SQLException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 
} 

Любая помощь очень высоко ценится, это должно быть простой задачей, но смотрел на нее так долго, что я не могу видеть для поиска. Благодаря!

* NB-таблица MySql БД «Информация», столбец с содержащим блоб является «фотографии»

Обновлены: Программа должны заполнить соответствующие текстовые поля с именем, адрес и т.д., а также отображать фотографию сотрудника в соответствующую метку. Текстовые поля заполняются, но программа выходит из строя в этой строке: picLabel2.setIcon (format); возврат nullPointerException() ** строка 630

+0

Что именно в вашей программе не так, как ожидалось? Пожалуйста, укажите номера строк/укажите некоторые строки, в которых происходит реальная проблема. – skiwi

+0

java.lang.NullPointerException \t в test.search (test.java:630) \t на тест $ 7.mouseClicked (test.java:521) \t в java.awt.AWTEventMulticaster.mouseClicked (Unknown Source) \t на java.awt.Component.processMouseEvent (Неизвестный источник) – RMcGuigan

+0

Программа должна заполнить соответствующие текстовые поля именем, адресом и т. д. и отобразить фотографию сотрудника на соответствующей метке. Текстовые поля заполняются, но программа выходит из строя в этой строке: picLabel2.setIcon (format); return nullPointerException – RMcGuigan

ответ

0

Вы не инициализировали picLabel2. (Судя по ошибке)

Где-то выше picLabel2.setIcon(format);, вам нужно будет сделать следующее:

JLabel picLabel2 = new JLabel();

Вы также можете все еще хотите установить текст на этикетке, если это требуется, то вам может быть:

  • Передайте его как String в конструкторе.
  • Звонок picLabel2.setText(string).
+0

Спасибо, лыжи, я инициализировал JLabel, и программа больше не сбой, текстовые поля заполняются правильно, однако изображение сотрудника все еще не отображается :( – RMcGuigan

+0

В соответствии с методом docs .setIcon() ничего не отображает если нуль передан ... Можете ли вы предложить способ проверить, получено ли значение ...? Спасибо – RMcGuigan

+0

'System.out.println (format);' или что вы имеете в виду именно? – skiwi

Смежные вопросы