我试图从数据库中获取每张图片,并将其放入ArrayList中,然后将其打印出来。 但是我得到一个我不明白的结果。

结果:

在此处输入图片说明

Q1:为什么我得到此结果?

Q2:如果然后我想用ImageIcon显示图片,是否可以使用ArrayList?

这是我的代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.*;


public class ImageData {

    public static void main(String[] args){

        Connection con = null;
        Statement st = null;
        ResultSet rs = null;

        //databasens lokalisation, namn, användare & lösenord
        String url      = "jdbc:mysql://localhost:3306/";
        String dbname   = "101207-facemash";
        String user     = "root";
        String pwd      = "root";
        List<String> img = new ArrayList<String>();

        try{
            // Vi upprätta en anslutning till databasen med hjälp av anslutningen URL, dbnamnet, användarnamn och lösenord.
            con = DriverManager.getConnection(url + dbname, user, pwd);
            st = con.createStatement();
            rs = st.executeQuery("SELECT filename FROM images");

            while(rs.next()){
                img.add(rs.getString("filename"));
                System.out.println(img);
            }

         } catch (SQLException ex) {
                Logger lgr = Logger.getLogger(ImageData.class.getName());
                lgr.log(Level.SEVERE, ex.getMessage(), ex);

            } finally {
                try {
                    if (rs != null) {
                        rs.close();
                    }
                    if (st != null) {
                        st.close();
                    }
                    if (con != null) {
                        con.close();
                    }

                } catch (SQLException ex) {
                    Logger lgr = Logger.getLogger(ImageData.class.getName());
                    lgr.log(Level.WARNING, ex.getMessage(), ex);
                }
            }

        }

    }

===============>>#1 票数:0

您正在检索图像文件的名称,而不是图像本身。 如果图像存储在数据库中,则必须使用第二个查询(使用通过第一次查询从db中检索到的图像名称)或通过检索表的不同列来检索它们(取决于数据库的方式)组织)。 如果它们存储在单独的文件中(db仅包含文件名),那么检索名称后,您需要读取每个图像。 ImageIO类将对此有用。 (此外,如果您以URL的形式输入名称,则ImageIcon类也可以检索图像本身。)

至于使用ArrayList,这通常是处理不确定大小数组的好方法。 我不认为您使用ImageIcon(一次处理一个图像)这一事实与ArrayList是否是一个好主意无关。

  ask by SHUMAcupcake translate from so

未解决问题?本站智能推荐:

1回复

客户ArrayList类修改Java中的特定元素

如何在自定义ArrayList中的特定位置更改特定变量? 我创建了一个ArrayList类,需要调整列表中的某个变量,但是我似乎无法弄清楚如何实现它。 我也搜索了答案,但似乎没有什么是我的问题特有的。 我的超级班级的代码是: 我列表的代码是... 我要执行的操作是更改I
1回复

根据数据库查询的结果将数据存储在2D数组列表中

我正在查询一个数据库,该数据库的输出是用户ID和该用户已使用的标签,但是标签为单一字符串格式,并用<>括起来。 我正在使用这些语句存储结果 所以输出可以认为是这样的: 在此之后,我正在处理str2,以便拆分和删除<>并将标签存储在ArrayList中
1回复

使用SpringBoot无法将ArrayList中的2个以上元素保存到MySQL?

使用SpringBoot,我无法将ArrayList中的2个以上的元素保存到MySQL。 当我使用数组中的一个对象发出发布请求(Postman或Alamofire)时,我得到状态码200,否则我得到状态码500和springboot控制台中的此错误消息: java.sql.SQLIn
1回复

如何在JTable中将Blob显示为图像

我需要一些帮助来显示从MySQL到JTable的图像(blob)。 我研究了一些需要包括的帮助 这是我的代码: 但是桌上没有照片。 它只是白色/空白,但是当我单击应该是图像“ [B @ 147cec””时显示
1回复

如何将LONGBLOB图像从SQL转换为缓冲图像以显示在标签中

我正在尝试从sql db中的longblob图像中显示字节数组,然后将其放入BufferedImage并将其缩放到标签的大小,我知道可以肯定的部分是我的SQL语句和实现后的重新缩放还有别的地方。 我不知道它是否实际上是在写入变量“图像”或被制成图标,然后是bufferedImage。 我肯定
1回复

如何在Java中串联SQL查询?

我开始学习sql和java,但遇到了问题。 该代码的逻辑是: sql语句的第一部分应该是“ a.stdn_code_ts”,随着包括更多元素(在这种情况下为学生代码),我需要与and语句连接。 学生代码可以是单个值或范围,例如:“ 567777”和“ 567777-876677
4回复

如何将MySQL查询结果导入ArrayList
我有SQL查询,导致多列。 我想执行此查询并将结果存入我的ArrayList<>而不是ResultSet 。 我的列定义是 查询是: 我想在recordData对象中查询结果。 请建议如何使用正确的映射直接填充arraylist。
1回复

比较两个表中的值,并将从第一个表中获取的值插入第二个表中

请帮助! 我有2个表:信息和消息信息的列为: 消息的列为: 我想将新值插入到Message中,并用Info的ID的对应值设置id(在Message中)的值。 如示例所示,消息中的id 1告诉我们该行对应于Info表的id 1。 我正在编写Java代码以将新值插入到Mes
2回复

在where子句中使用ArrayList中的值而无需查询?

我正在尝试基本做到这一点: 所以基本上我有一个ArrayList有说10点的ID,我希望SQL不返回任何有一个ID一样在我的ArrayList中的行,我宁愿不喜欢10个查询做到这一点。 有什么办法吗?
1回复

Java JDBC通用SQL插入功能

我正在编写一个通用函数以将数据插入SQLtables,并且想知道如何改进当前的实现。 我当前的功能如下: table-SQL表的名称insertRow-要插入的值的ArrayList 有些表还包含除VARCHARS以外的其他属性,因此我正在考虑ArrayList<xta