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