我试图从数据库中获取每张图片,并将其放入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

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