1

sqlite データベースと netbeans を使用してアプリケーションを作成しています。画像をデータベースに保存するときに問題が発生します。データベースにデータ型が BLOB の画像フィールドがあり、バイト配列を挿入しています。一致しないことはわかっていますが、保存すると「[B@2c8f544b」のような値が保持されますが、実際の値は「BLOB (サイズ: 1850)」のようになります。そのような値があれば、私だけが画像を取得できます。これを行う方法が本当にわかりません。参考になるものがあれば教えてください。

私の考えは、データベースに保存する前にバイト配列を BLOB 型に変換することですが、コードが見つかりませんでした。

        String fname = p.fname;
        String lname = p.lname;
        byte[] image = p.image_det;
        String mob = p.mobile;
        String wor = p.work;
        String hom = p.home;
        String fax = p.fax;
        int pID ;

        ResultSet rst = stmt.executeQuery("SELECT MAX(pID) FROM person");

        pID =    Integer.parseInt(rst.getString(1))+1;


        Statement stmt1 = con.createStatement();
        stmt1.executeUpdate("INSERT INTO person(pID,F_name,L_name,image) VALUES ("+pID+" ,'"+fname+"','"+lname+"','"+image+"' ) ");

//-------------------------画像パスを取得し、image_details という配列に画像データを取得します

    File f;
    String ipath = f.getAbsolutePath();  // getting image path
    byte[] image_detail = null;

    try 
    {
        File image = new File(ipath);
        FileInputStream fis = new FileInputStream(image); 


        ByteArrayOutputStream baos = new ByteArrayOutputStream();

        byte[] buf = new byte[1024];

        for(int readNum;(readNum = fis.read(buf))!= -1;)
        {
            baos.write(buf, 0,readNum);
        }

        image_detail =  baos.toByteArray();

        per.setImage_det(image_detail); // set image data for person class
4

0 に答える 0