Как отображать изображение на 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();
@JB Я только что произвел предложения buh! О Боже ! Этот код не хочет работать. Нет заметного отличия от предыдущего кода. Не могли бы вы просто любезно запустить это из ура для меня PLS. я так смущен, но никогда не сдадусь! – edet4krist