Вставка BLOB-данных в Java с использованием PreparedStatement

Я использую следующий код для вставки изображения в базу данных. Он будет хранить два изображения, потому что я использовалPreparedStatement а такжеStatement.

Когда я запускаю этот код, я получаю два изображения в базе данных. Но эти два изображения разные, и я не понимаю, почему. С помощьюPreparedStatementвставляю идеально. Я хочу иметь такое же изображение, когда я используюStatement, Почему это не работает сейчас, и как я могу заставить его работать?

import java.io.*;
import java.sql.*;
public class Image
{
    public static void main(String args[]) throws Exception
    {
        System.out.println("kshitij");
        Class.forName("com.mysql.jdbc.Driver");
        Connection cn=DriverManager.getConnection("jdbc:mysql://localhost:3306/jsfdb","root","kshitij");
        Statement st=cn.createStatement();
        File f1=new File("c:\\k1.jpg");
        FileInputStream fin=new FileInputStream(f1);
        //DataInputStream dataIs = new DataInputStream(new FileInputStream(f1));
        PreparedStatement pst = cn.prepareStatement("insert into registration(image) values(?)");
        //pst.setInt(1,67);
        pst.setBinaryStream(1,fin,fin.available());
        pst.executeUpdate();
        //int length=(int)f1.length();
        byte [] b1=new byte[(int)f1.length()];
        fin.read(b1);
        fin.close();
        st.executeUpdate("insert into registration(image) values('"+b1+"')");
        System.out.println("Quesry Executed Successfully");
        FileOutputStream fout=new FileOutputStream("d://k1.jpg");
        fout.write(b1);
        fout.close();
    }
}

MySQL

CREATE DATABASE IF NOT EXISTS jsfdb;
USE jsfdb;

-- Definition of table `registration`
DROP TABLE IF EXISTS `registration`;
CREATE TABLE `registration` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `image` blob NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=234 DEFAULT CHARSET=latin1;

Ответы на вопрос(3)

Ваш ответ на вопрос