1. สร้างตาราง:
คัดลอกรหัสรหัส ดังต่อไปนี้:
วางตารางถ้ามีรูปถ่ายอยู่
สร้างภาพตาราง (
id INT ไม่ใช่คีย์หลัก AUTO_INCREMENT ที่เป็นโมฆะ
ชื่อ VARCHAR(100) ความคิดเห็น 'ชื่อ'
รูปภาพหยด ความคิดเห็น 'ภาพถ่าย'
-
เครื่องยนต์=อินโนดีบี
ค่าเริ่มต้นแผนภูมิ=utf8
COLLATE=utf8_general_ci;
รูปแบบการจัดเก็บข้อมูลของรูปภาพใน MySql เป็นแบบหยด Blob เป็นคอนเทนเนอร์ที่สามารถจัดเก็บไฟล์ไบนารี่ได้
2. เขียนคลาสเครื่องมือสำหรับการเข้าถึงข้อมูลสตรีมรูปภาพ:
คัดลอกรหัสรหัส ดังต่อไปนี้:
นำเข้า java.io.File;
นำเข้า java.io.FileInputStream;
นำเข้า java.io.FileNotFoundException;
นำเข้า java.io.FileOutputStream;
นำเข้า java.io.IOException;
นำเข้า java.io.InputStream;
ImageUtil คลาสสาธารณะ {
ไฟล์คงที่ส่วนตัว ไฟล์ = null;
-
* อ่านสตรีมภาพไบนารีจากไฟล์ในเครื่อง
-
* @param อินไฟล์
* @กลับ
-
FileInputStream สาธารณะคงที่ getImageByte (ไฟล์สตริง) {
FileInputStream imageByte = null;
ไฟล์ = ไฟล์ใหม่ (infile);
พยายาม {
imageByte = FileInputStream ใหม่ (ไฟล์);
} จับ (FileNotFoundException จ) {
e.printStackTrace();
-
กลับรูปภาพไบต์;
-
-
* อ่านสตรีมรูปภาพเป็นรูปภาพ
-
* @param inputStream
* เส้นทาง @param
-
โมฆะสาธารณะ readBlob แบบคงที่ (InputStream inputStream, เส้นทางสตริง) {
พยายาม {
FileOutputStream fileOutputStream = FileOutputStream ใหม่ (เส้นทาง);
ไบต์ [] บัฟเฟอร์ = ไบต์ใหม่ [1024];
อินท์เลน = 0;
ในขณะที่ ((len = inputStream.read (บัฟเฟอร์)) != -1) {
fileOutputStream.write (บัฟเฟอร์, 0, len);
-
inputStream.ปิด();
fileOutputStream.close();
} จับ (FileNotFoundException จ) {
e.printStackTrace();
} จับ (IOException จ) {
e.printStackTrace();
-
-
-
3. บันทึกไฟล์ในเครื่องไปยังฐานข้อมูล
คุณต้องเพิ่มไดรเวอร์ฐานข้อมูล MySql--mysql-connector-java-5.1.24-bin.jar
คัดลอกรหัสรหัส ดังต่อไปนี้:
นำเข้า java.io.IOException;
นำเข้า java.io.InputStream;
นำเข้า java.sql.Connection;
นำเข้า java.sql.DriverManager;
นำเข้า java.sql.PreparedStatement;
นำเข้า java.sql.SQLException;
ImageInsert คลาสสาธารณะ {
โมฆะคงที่สาธารณะ main (String [] args) {
พยายาม {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} จับ (InstantiationException e) {
e.printStackTrace();
} จับ (IllegalAccessException e) {
e.printStackTrace();
} จับ (ClassNotFoundException จ) {
e.printStackTrace();
-
ผู้ใช้สตริง = "root";
รหัสผ่านสตริง = "root";
สตริง url = "jdbc:mysql://localhost:3306/test?CharacterEncoding=utf-8";
การเชื่อมต่อการเชื่อมต่อ = null;
พยายาม {
การเชื่อมต่อ = DriverManager.getConnection (url, ผู้ใช้, รหัสผ่าน);
} จับ (SQLException e) {
e.printStackTrace();
-
คำสั่งที่เตรียมไว้ คำสั่งที่เตรียมไว้ = null;
สตรีมอินพุต สตรีมอินพุต = null;
inputStream = ImageUtil.getImageByte("D://temp//photo1.png");
พยายาม {
String sql = "ใส่ค่าของรูปภาพ(id,ชื่อ,รูปภาพ)(?,?,?)";
readyStatement = การเชื่อมต่อ.prepareStatement(sql);
readyStatement.setInt(1, 1);
readyStatement.setString(2, "จูลี่");
readyStatement.setBinaryStream (3, inputStream,
inputStream.available());
readyStatement.execute();
} จับ (SQLException e) {
e.printStackTrace();
} จับ (IOException จ) {
e.printStackTrace();
} ในที่สุด {
พยายาม {
ถ้า (inputStream != null)
inputStream.ปิด();
} จับ (IOException จ) {
e.printStackTrace();
} ในที่สุด {
พยายาม {
ถ้า (preparedStatement != null)
เตรียมงบ.ปิด();
} จับ (SQLException e) {
e.printStackTrace();
} ในที่สุด {
พยายาม {
การเชื่อมต่อ.ปิด();
} จับ (SQLException e) {
e.printStackTrace();
-
-
-
-
-
-
4. อ่านและสร้างรูปภาพจากฐานข้อมูล
คัดลอกรหัสรหัส ดังต่อไปนี้:
นำเข้า java.io.IOException;
นำเข้า java.io.InputStream;
นำเข้า java.sql.Connection;
นำเข้า java.sql.DriverManager;
นำเข้า java.sql.ResultSet;
นำเข้า java.sql.SQLException;
นำเข้า java.sql.Statement;
ImageGet คลาสสาธารณะ {
โมฆะคงที่สาธารณะ main (String [] args) {
พยายาม {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} จับ (InstantiationException e) {
e.printStackTrace();
} จับ (IllegalAccessException e) {
e.printStackTrace();
} จับ (ClassNotFoundException จ) {
e.printStackTrace();
-
ผู้ใช้สตริง = "root";
รหัสผ่านสตริง = "root";
สตริง url = "jdbc:mysql://localhost:3306/test?CharacterEncoding=utf-8";
การเชื่อมต่อการเชื่อมต่อ = null;
พยายาม {
การเชื่อมต่อ = DriverManager.getConnection (url, ผู้ใช้, รหัสผ่าน);
} จับ (SQLException e) {
e.printStackTrace();
-
คำสั่งงบ = null;
ResultSet resultSet = null;
สตรีมอินพุต สตรีมอินพุต = null;
พยายาม {
คำสั่ง = การเชื่อมต่อ createStatement();
String sql = "เลือก p.photo จากรูปภาพ p โดยที่ id = 1";
resultSet = คำสั่ง.executeQuery(sql);
resultSet.ถัดไป();
inputStream = resultSet.getBinaryStream("ภาพถ่าย");
ImageUtil.readBlob(อินพุตสตรีม "D://temp//photo2.png");
} จับ (SQLException e) {
e.printStackTrace();
} ในที่สุด {
พยายาม {
ถ้า (inputStream != null)
inputStream.ปิด();
} จับ (IOException จ) {
e.printStackTrace();
} ในที่สุด {
พยายาม {
ถ้า (ชุดผลลัพธ์!= null)
resultSet.ปิด();
} จับ (SQLException e) {
e.printStackTrace();
} ในที่สุด {
ถ้า (คำสั่ง != null)
ถ้า (คำสั่ง != null)
พยายาม {
คำสั่ง.ปิด();
} จับ (SQLException e) {
e.printStackTrace();
} ในที่สุด {
ถ้า (การเชื่อมต่อ != null)
พยายาม {
การเชื่อมต่อ.ปิด();
} จับ (SQLException e) {
e.printStackTrace();
-
-
-
-
-
-
-
5.จบแล้ว!