Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

Javaطريقة إسترجاع ملف صوتي, صورة, فيديو من قاعدة البيانات في جافا

في المثال التالي سنفترض أننا سنقوم بالإتصال بقاعدة بيانات إسمها company تمثل قاعدة بيانات لشركة و مبنية بنظام MySQL.
يوجد في هذه القاعدة جدول خاص للموظفين إسمه employee.
في البداية سنجهز إستعلام الهدف منه إسترجاع صورة أي موظف موجود في الجدول.
بعدها, سنحدد الموظف الذي إسترجاع صورته من قاعدة البيانات بالإعتماد على رقم الـ ID الخاص فيه.


مثال

Main.java
// هنا قمنا بإستدعاء الكلاسات و الإنترفيسات التي سنستخدمها للتعامل مع الملفات و قاعدة البيانات
import java.io.FileOutputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
 
public class Main {
 
    public static void main(String[] args) {
 
        try {
            // الذي سنعتمد عليه للوصول إلى قاعدة البيانات MYSQL Driver هنا قمنا بتحديد رابط الوصول لبرنامج الـ
            Class.forName("com.mysql.jdbc.Driver");
 
            // و الذي سنستخدمه لتحديد المعلومات الأساسية التي نحتاجها للإتصال بقاعدة البيانات Connection هنا قمنا بإنشاء كائن من الكلاس
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/company","root","password");
 
            // و الذي سنستخدمه لإرسال إستعلام إلى قاعدة البيانات PreparedStatement هنا قمنا بتجهيز كائن نوعه
            PreparedStatement pstmt = con.prepareStatement("SELECT image FROM employee WHER id=?");
 
            // هنا قمنا بتمرير الرقم 44 مكان علامة الإستفهام الموضوعة في الإستعلام
            pstmt.setInt(1, 44);
 
            // rs هنا قمنا بتنفيذ الإستعلام و تخزين النتيجة في الكائن
            ResultSet rs = pstmt.executeQuery();
 
            // لأننا نعلم حتماً أن نتيجة الإستعلام ستكون عبارة عن سطر واحد rs هنا توجهنا مباشرةً لأول سطر موجود في الكائن
            rs.next();
 
            // لأننا سنستخدمه لجلب محتوى الصورة من قاعدة البيانات Blob هنا قمنا بإنشاء كائن من الإنترفيس
            Blob b = rs.getBlob(1);
 
            // imageBytes إسمها byte هنا قمنا بتخزين محتوى الصورة في مصفوفة نوعها
            byte imageBytes[] = b.getBytes(1,(int)b.length());
 
            // لأننا سنستخدمه لقراءة محتوى الصورة التي حصلنا عليها من قاعدة البيانات FileOutputStream هنا قمنا بإنشاء كائن من الكلاس
            FileOutputStream fos = new FileOutputStream("d:\\retrived-image.png");
 
            // بمعنى آخر قمنا بإنشاء نسخة من الصورة ,imageBytes هنا قمنا بكتابة محتوى الصورة الموجود في المصفوفة
            fos.wirte(imageBytes);
 
            // هنا قمنا بإغلاق الملف, أي كأننا أغلقنا الصورة
            fos.close();
 
            // هنا قمنا بإغلاق الإتصال مع قاعدة البيانات
            con.close();
        }
        catch(Exception e) {
            System.out.println(e.getMessage());
        }
 
    }
 
}

لو كانت قاعدة البيانات موجودة و قمنا بتشغيل البرنامج سنسترجع الصورة الموضوعة في سجل الموظف.