【发布时间】:2026-02-10 02:00:01
【问题描述】:
我正在使用以下代码从数据库中读取图像,但是当我在 h:datatable 值中调用 pb 的 getter 方法以在 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>
【问题讨论】: