1. إنشاء جدول:
انسخ رمز الكود كما يلي:
إسقاط الجدول إذا كانت الصورة موجودة؛
إنشاء صورة جدول (
المعرف INT ليس NULL AUTO_INCREMENT المفتاح الأساسي،
اسم VARCHAR(100) تعليق "اسم"،
الصورة فقاعة تعليق "الصورة"
)
المحرك=InnoDB
مجموعة الأحرف الافتراضية = utf8
COLLATE=utf8_general_ci;
تنسيق تخزين بيانات الصور في MySql هو نوع blob؛ وهو عبارة عن حاوية يمكنها تخزين الملفات الثنائية.
2. اكتب فئة أداة للوصول إلى بيانات دفق الصور:
انسخ رمز الكود كما يلي:
استيراد java.io.File؛
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
استيراد java.io.InputStream؛
الطبقة العامة ImageUtil {
ملف ملف ثابت خاص = فارغ؛
/**
* قراءة تيار ثنائي للصورة من الملف المحلي
*
* @param ملف
* @يعود
*/
FileInputStream العام الثابت getImageByte(String infile) {
FileInputStream imageByte = null;
ملف = ملف جديد(infile);
يحاول {
imageByte = new FileInputStream(file);
} قبض على (FileNotFoundException ه) {
printStackTrace();
}
إرجاع الصورة بايت؛
}
/**
* قراءة دفق الصورة كصورة
*
* @param inputStream
* @ مسار المعلمة
*/
قراءة الفراغ الثابت العام (InputStream inputStream، String path) {
يحاول {
FileOutputStream fileOutputStream = new FileOutputStream(path);
بايت[] المخزن المؤقت = بايت جديد[1024];
إنت لين = 0;
بينما ((len = inputStream.read(buffer)) != -1) {
fileOutputStream.write(buffer, 0, len);
}
inputStream.Close();
fileOutputStream. Close();
} قبض على (FileNotFoundException ه) {
printStackTrace();
} قبض (IOException ه) {
printStackTrace();
}
}
}
3. حفظ الملفات المحلية إلى قاعدة البيانات
تحتاج إلى إضافة برنامج تشغيل قاعدة بيانات MySql--mysql-connector-java-5.1.24-bin.jar
انسخ رمز الكود كما يلي:
import java.io.IOException;
استيراد java.io.InputStream؛
استيراد java.sql.Connection؛
استيراد java.sql.DriverManager؛
import java.sql.PreparedStatement;
استيراد java.sql.SQLException؛
فئة عامة ImageInsert {
public static void main(String[] args) {
يحاول {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} قبض على (InstantiationException e) {
printStackTrace();
} قبض على (IllegalAccessException e) {
printStackTrace();
} التقاط (ClassNotFoundException e) {
printStackTrace();
}
مستخدم السلسلة = "الجذر"؛
كلمة مرور السلسلة = "الجذر"؛
String url = "jdbc:mysql://localhost:3306/test?characterEncoding=utf-8";
اتصال الاتصال = فارغ؛
يحاول {
اتصال = DriverManager.getConnection(url, المستخدم, كلمة المرور);
} قبض على (SQLException ه) {
printStackTrace();
}
PreparedStatement PreparationStatement = null;
InputStream inputStream = null;
inputStream = ImageUtil.getImageByte("D://temp//photo1.png");
يحاول {
String sql = "أدخل في قيم الصورة (المعرف، الاسم، الصورة) (؟،؟،؟)"؛
PrepareStatement = Connection.prepareStatement(sql);
PreparationStatement.setInt(1, 1);
PredStatement.setString(2, "Julie");
PreparedStatement.setBinaryStream(3، inputStream،
inputStream.available());
PreparedStatement.execute();
} قبض على (SQLException ه) {
printStackTrace();
} قبض (IOException ه) {
printStackTrace();
} أخيراً {
يحاول {
إذا (inputStream != فارغة)
inputStream.Close();
} قبض (IOException ه) {
printStackTrace();
} أخيراً {
يحاول {
إذا (preparedStatement != null)
PreparedStatement.Close();
} قبض على (SQLException ه) {
printStackTrace();
} أخيراً {
يحاول {
اتصال. إغلاق ()؛
} قبض على (SQLException ه) {
printStackTrace();
}
}
}
}
}
}
4. قراءة وتوليد الصور من قاعدة البيانات
انسخ رمز الكود كما يلي:
import java.io.IOException;
استيراد java.io.InputStream؛
استيراد java.sql.Connection؛
استيراد java.sql.DriverManager؛
import java.sql.ResultSet;
استيراد java.sql.SQLException؛
استيراد java.sql.Statement؛
الطبقة العامة ImageGet {
public static void main(String[] args) {
يحاول {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} قبض على (InstantiationException e) {
printStackTrace();
} قبض على (IllegalAccessException e) {
printStackTrace();
} التقاط (ClassNotFoundException e) {
printStackTrace();
}
مستخدم السلسلة = "الجذر"؛
كلمة مرور السلسلة = "الجذر"؛
String url = "jdbc:mysql://localhost:3306/test?characterEncoding=utf-8";
اتصال الاتصال = فارغ؛
يحاول {
اتصال = DriverManager.getConnection(url, المستخدم, كلمة المرور);
} قبض على (SQLException ه) {
printStackTrace();
}
بيان البيان = فارغ؛
ResultSet resultSet = null;
InputStream inputStream = null;
يحاول {
البيان = Connection.createStatement();
String sql = "اختر p.photo من الصورة p حيث المعرف = 1";
resultSet = البيان.executeQuery(sql);
resultSet.next();
inputStream = resultSet.getBinaryStream("photo");
ImageUtil.readBlob(inputStream, "D://temp//photo2.png");
} قبض على (SQLException ه) {
printStackTrace();
} أخيراً {
يحاول {
إذا (inputStream != فارغة)
inputStream.Close();
} قبض (IOException ه) {
printStackTrace();
} أخيراً {
يحاول {
إذا (resultSet! = فارغة)
resultSet. Close();
} قبض على (SQLException ه) {
printStackTrace();
} أخيراً {
إذا (بيان! = فارغ)
إذا (بيان! = فارغ)
يحاول {
بيان. إغلاق ()؛
} قبض على (SQLException ه) {
printStackTrace();
} أخيراً {
إذا (اتصال! = فارغ)
يحاول {
اتصال. إغلاق ()؛
} قبض على (SQLException ه) {
printStackTrace();
}
}
}
}
}
}
}
5. انتهى!