1

データベースからすべての画像を取得して 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);
                }
            }

        }

    }
4

1 に答える 1

0

画像自体ではなく、画像ファイルの名前を取得しています。画像がデータベースに保存されている場合は、最初のクエリでデータベースから取得した画像名を使用した2番目のクエリで、またはテーブルの別の列を取得することで、画像を取得する必要があります(データベースの方法によって異なります)。整理されています)。それらが別々のファイルに保存されている場合(dbにはファイル名のみが含まれています)、名前を取得した後に各イメージを読み込む必要があります。ImageIOクラスはそのために役立ちます。(また、名前をURLの形式で入力すると、ImageIconクラスは画像自体を取得できます。)

ArrayListの使用に関しては、これは通常、サイズが不確定な配列を処理するための良い方法です。ImageIcon(一度に1つの画像を処理する)を使用しているという事実は、ArrayListが良いアイデアであるかどうかに関係があるとは思いません。

于 2011-12-11T18:33:21.750 に答える