2013-11-16 3 views
0

Как отображать изображение на JLabel из столбца blob в базе данных оракула?Показать изображение на JLabel из столбца blob в базе данных Oracle

Здравствуйте, я изо всех сил в течение нескольких дней в настоящее время пытаются , чтобы выяснить, как я могу отобразить изображение на JLabel из столбца больших двоичных объектов в базе данных оракула, но все усилия , кажется, не достаточно для получения желаемых результатов. Проблема заключается в том, что ярлык отображает темный цветной материал , такой как фон. Я потратил так много времени googling, а также поиск здесь в переполнении стека , но доступные ресурсы меня не пускают Пожалуйста, помогите мне! спасибо. Ниже приведен фрагмент кода, я работаю с .....

private void studentIdItemStateChanged(java.awt.event.ItemEvent evt)   {           
     String id = (String)studentId.getSelectedItem(); 


     try{ 


      con = DriverManager.getConnection("jdbc:odbc:test", "SYSTEM", "VICTOR"); 
      stmt = con.createStatement(); 
      result = stmt.executeQuery("select * from STUDENTDBASE.STUDENT where Student_Id = '" + id + "' "); 
      result = stmt.getResultSet(); 

      while (result.next()){ 
       surname.setText(result.getString("Surname")); 
       firstName.setText(result.getString("First_Name")); 
       otherNames.setText(result.getString("Other_Names")); 
       phoneNumber.setText(result.getString("Mobile_Number")); 
       dob.setText(result.getString("Date_Of_Birth")); 
       gender.setText(result.getString("Gender")); 
       address.setText(result.getString("Address")); 
       state.setText(result.getString("State")); 
       lga.setText(result.getString("Lga")); 

       } 
      result.close(); 


      PreparedStatement ps;   
      con = DriverManager.getConnection("jdbc:odbc:test", "SYSTEM", "VICTOR"); 
      ps = (PreparedStatement) con.prepareStatement("select Image from STUDENTDBASE.STUDENT_Images where STUDENT_ID = '" + id + "' "); 
      result2 = ps.executeQuery(); 

      while (result2.next()){ 


       InputStream in = result2.getBinaryStream("Image"); 


       BufferedImage im = ImageIO.read(in); 
       BufferedImage outimage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB); 
       Graphics2D g = outimage.createGraphics(); 

       float xScale = (float)image.getWidth()/outimage.getWidth(); 
       float yScale = (float)image.getHeight()/outimage.getHeight(); 
       AffineTransform at = AffineTransform.getScaleInstance(xScale,yScale); 
       g.drawRenderedImage(im,at); 
       g.dispose(); 
       Image scaledImage = outimage.getScaledInstance(image.getWidth(), image.getHeight(), Image.SCALE_SMOOTH); 
       ImageIcon icon = new ImageIcon(scaledImage); 
       image.setIcon(icon); 
       image.revalidate(); 
       basicDetails.revalidate(); 
       } 
      result2.close(); 
      con.close(); 
    } 
    catch(SQLException d){ 
     JOptionPane.showMessageDialog(null, "Error is due to " + d.getMessage(), "Error message from database", JOptionPane.ERROR_MESSAGE); 
    } 
     catch(IOException io){ 
     JOptionPane.showMessageDialog(null, "Error is due to " + io.getMessage(), "Error message from database", JOptionPane.ERROR_MESSAGE); 
     } 







//Insert Student image into database 
      url = "jdbc:odbc:test"; 
      String query1 = "insert into STUDENTDBASE.STUDENT_Images (Student_Id, Image, Image_Path, Image_Size)values('" + counterValue + "', ?, '" + path + "', '" + stringLength + "') "; 
      con = DriverManager.getConnection(url, "SYSTEM", "VICTOR"); 
      PreparedStatement ps=con.prepareStatement(query1); 
      FileInputStream fin=new FileInputStream(file); 
      ps.setString(1, file.getName()); 
      ps.setBinaryStream(2, fin, file.length()); 
      ps.executeUpdate(); 

ответ

0

Изображение никогда не был вставлен, потому что вы используете PreparedStatement неправильно. Вы должны использовать? для всех параметров, а не только для одного из них.

+0

@JB Я только что произвел предложения buh! О Боже ! Этот код не хочет работать. Нет заметного отличия от предыдущего кода. Не могли бы вы просто любезно запустить это из ура для меня PLS. я так смущен, но никогда не сдадусь! – edet4krist

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