我正在尝试显示从blob数据类型的MySQL数据库检索的图像。无法找出是什么原因导致图像列显示这样的数据[B@29b8e4f7
而不是图像图标。
DefaultTableModel model = new DefaultTableModel(new Object[]{
"image", "item_name", "quantity","price", "category", "color", "size"}, 0){
@Override
public Class<?> getColumnClass(int column) {
switch(column){
case 0: return ImageIcon.class;
default: return String.class;
}
}
};
myTable.setModel(model);
…
ResultSet rs = database.getRS();
int columns = rs.getMetaData().getColumnCount();
while(rs.next()){
Object[] row = new Object[columns];
for(int i = 1; i <= columns; i++){
row[i-1] = rs.getObject(i);
}
DefaultTableModel defmodel = (DefaultTableModel) tableItem.getModel();
defmodel.insertRow(rs.getRow()-1, row);
}
由于您曾经preparedstatement.setBlob(1, InputStream);
存储图像,因此我必须假定您存储的是物理图像文件/格式,而不仅仅是像素数据。
您需要回读此图像格式并将其转换为Swing / Java支持的图像格式。
首先获取Blob
对数据库字段的引用…
Blob blob = rs.getBlob(1);
一旦有了Blob
,就可以使用它的二进制文件InputStream
并读取数据…
BufferedImage image = null;
try (InputStream is = blob.getBinaryStream()) {
image = ImageIO.read(is);
} catch (IOException exp) {
exp.printStackTrace();
}
现在,你可以把它的ImageIcon
使用new ImageIcon(image)
和您的表格模型中把这个…
我想在JTable中显示MySQL中的数据,但只显示了表中的最后一行。请帮帮我。我知道我有一个问题,因为jt=newjtable(数据,列)每次都为每行创建一个新表(删除之前的),但我找不到正确的选项。
问题内容: 很难说出这里的要求。这个问题是模棱两可的,模糊的,不完整的,过于广泛的或修辞性的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 6年前关闭。 我有将图像存储在列中的MySQL数据库。我想在PrimeFaces中展示它们。我该如何实现? 问题答案: 您可以使用来显示存储在中的图像,而不管其来源(数据库,磁盘文件系统,网络等)如何。最简单的例子是: 指
问题内容: 此代码将图片test.gif放入图片位值中。 我的下一个目标是显示以字节为单位保存在数据库中的图片。如何才能做到这一点 ? 问题答案: 就像是: 可能为您工作。
问题内容: 我正在使用jdbc编写程序,该程序将成为数据库的接口(类似于CRUD应用程序)。我假设我必须编写一个类(例如),该类将对数据库执行所有操作(以及可能会简化为这些操作的某些其他逻辑)。用户界面由一组表和一些按钮组成。要使用Jtable,我需要实现一个类(例如),它是AbstractTableModel的子类。因此,此类将向用户显示我的数据。我需要为数据库架构中的所有表实现这种模型。我不想
问题内容: 嗨,我的数据库中有一个图像表。这些与细节一起存储为Blob,例如图像类型和名称。 我在显示图像时遇到问题,我得到的只是一个带有红色十字的白框。码: 谢谢 问题答案: 好吧,这是一个简短的答案。 检查您的Blob类型是否至少为MEDIUMBLOB,它能够存储高达16M的数据
问题内容: 所以我的最后一个问题是如何从搜索中显示我的techID: 我正在尝试让我的“详细信息”页面引用通过techID链接的服务器的两个独立部分 我的新问题仍在此页面上。我还添加了回声图像。但在使用和显示我的图像而不是二进制JPEG数据时遇到了麻烦。我一直在尝试寻找这种情况的另一个实例,但是找不到任何可以解决我的错误的实例。 和 是我到目前为止提出的最后一个问题中唯一的更改(显然包括我得到的有