Tôi đang sử dụng mã sau để chèn hình ảnh vào cơ sở dữ liệu. Nó sẽ lưu trữ hai hình ảnh vì tôi đã sử dụng PreparedStatement
và Statement
.Chèn dữ liệu blob vào Java bằng cách sử dụng PreparedStatement
Khi tôi chạy mã này, tôi nhận được hai hình ảnh trong cơ sở dữ liệu. Nhưng hai hình ảnh khác nhau, và tôi không hiểu tại sao. Sử dụng PreparedStatement
, nó được chèn hoàn hảo. Tôi muốn có cùng một hình ảnh khi tôi sử dụng Statement
. Tại sao nó không hoạt động bây giờ, và làm thế nào tôi có thể làm cho nó hoạt động?
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;
"hãy chạy mã và tập lệnh này bạn sẽ tìm thấy hai hình ảnh trong bảng cơ sở dữ liệu. Nhưng cả hai đều khác nhau, tôi không biết tại sao." - xin lỗi, không đáng nỗ lực. Bạn nên làm nhiều việc hơn ở đây. – duffymo
Vui lòng thụt lề mã của bạn đúng cách và sử dụng cách viết hoa phù hợp trong câu của bạn. –
Mọi người thường không chạy mã được cung cấp trên trang web này - quá mạo hiểm. Nhưng họ sẽ xem xét mã của bạn cho bạn. Bạn có mong đợi hai hình ảnh giống nhau không? – halfer