-3

私はデスクトップ プログラムを使用しており、さまざまな形式とさまざまなサイズの画像ファイルを db に保存する必要があります。どうすればそれを行うことができますか?誰でも私を助けることができますか?

4

4 に答える 4

0

次のように画像をバイナリに変換することで、画像をデータベースに保存できます。

public void saveImage(File file){
        try {
            String img_id=JOptionPane.showInputDialog("Enter Image ID");
            FileInputStream fis=null;
            String query="insert into image(image_id,image) values (?,?)";
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection con=DriverManager.getConnection("jdbc:odbc:image");
            PreparedStatement pstm=con.prepareStatement(query);
            fis=new FileInputStream(file);
            pstm.setString(1, img_id);       
            pstm.setBinaryStream(2, (InputStream)fis, (int)file.length());
            pstm.executeUpdate();
            JOptionPane.showMessageDialog(null, "Image Successfully Uploaded to Database");
            pstm.close();
            con.close();

        } catch (Exception ex) {
            System.out.println("Exception Occured: "+ex);
        }
    }

そして、バイナリから画像を再度作成して取得し、物理的な場所に保存します。

public void getSavedImages(){
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection con = DriverManager.getConnection("jdbc:odbc:image");
            PreparedStatement pstm1 = con.prepareStatement("select * from image");
            ResultSet rs1 = pstm1.executeQuery();
            while(rs1.next()) {
                InputStream fis1;
                FileOutputStream fos;
                String image_id;
                try {
                    fis1 = rs1.getBinaryStream("image");
                    image_id=rs1.getString("image_id");
                    fos = new FileOutputStream(new File(Path to "C:\\" + (image_id) + "Your Extension(.jpg/.gif)"));
                    int c;
                    while ((c = fis1.read()) != -1) {
                        fos.write(c);
                    }
                    fis1.close();
                    fos.close();

                } catch (Exception ex) {
                    System.out.println(ex);
                }
            } 
            pstm1.close();
            con.close();
        } catch (Exception ex) {
            System.out.println("Exception Occured:"+ex);
        }
    }
于 2012-12-08T11:04:51.220 に答える
0

通常、画像ファイルのアドレスをデータベースに保存する必要があります。

同じ目的を達成し、データベースが肥大化することはありません。

于 2012-12-08T10:07:34.290 に答える
0

BLOB として: http://en.wikipedia.org/wiki/Binary_large_object

正確な実装は、データベース システムによって異なります。

于 2012-12-08T10:09:57.833 に答える
0

これは、初心者の開発者にとって最も一般的な問題です。最善の解決策は...画像をフォルダーに保存し、ファイルパスをデータベースに保存すると、このファイルパスを使用してファイルにアクセスできるようになります。

于 2012-12-08T10:11:26.180 に答える