Я использую следующий код для чтения изображений из базы данных, но когда я вызываю метод getter для pb в h: значение datatable для отображения изображений на странице jsf, я получаю ошибку «oracle.sql.BLOB не может быть приведен к java.lang.String ". Есть идеи, пожалуйста?
Класс Java имеет свойство pb.
Код Java для чтения изображений:
public List<ImageBean> getPb() throws Exception {
int i = 0;
List<ImageBean> pb= new ArrayList<ImageBean>();
String url = "jdbc:oracle:thin:@localhost:1521:globldb3";
String username = "scott";
String password = "tiger";
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(url, username, password);
String sql = "SELECT name,image FROM save_image";
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet resultSet = pstmt.executeQuery();
while (resultSet.next()) {
String n =resultSet.getString(1);
File image = new File("D:\\java3.JPG");
FileOutputStream fos = new FileOutputStream(image);
byte[] buffer = new byte[1];
InputStream is = resultSet.getBinaryStream(2);
while (is.read(buffer) > 0) {
fos.write(buffer);
}
pb.add(i,new ImageBean(n,resultSet.getBlob(2)));
i++;
fos.close();
}
conn.close();
return pb;0
}
Страница JSF: -
<h:dataTable styleClass="panelGridColums" value="#{tableBean.pb}" var="i" border="1" >
<h:column>
<f:facet name="header">Id</f:facet>
<h:graphicImage value="#{i.pimage}" />
</h:column>
</h:dataTable>