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

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

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


مثال

Main.java
// هنا قمنا بإستدعاء الكلاسات و الإنترفيسات التي سنستخدمها للتعامل مع الملفات و قاعدة البيانات
import java.io.Reader;
import java.io.FileWriter;
import java.sql.Clob;
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 file FROM employee WHER id=?");
// هنا قمنا بتمرير الرقم 44 مكان علامة الإستفهام الموضوعة في الإستعلام
pstmt.setInt(1, 44);
// rs هنا قمنا بتنفيذ الإستعلام و تخزين النتيجة في الكائن
ResultSet rs = pstmt.executeQuery();
// لأننا نعلم حتماً أن نتيجة الإستعلام ستكون عبارة عن سطر واحد rs هنا توجهنا مباشرةً لأول سطر موجود في الكائن
rs.next();
// لأننا سنستخدمه لجلب محتوى الملف من قاعدة البيانات Clob هنا قمنا بإنشاء كائن من الإنترفيس
Clob clob = rs.getClob(1);
// clob لأننا سنستخدمه لقراءة محتوى الملف الذي يشير إليه الكائن FileReader هنا قمنا بإنشاء كائن من الكلاس
Reader r = clob.getCharacterStream();
// لأننا سنستخدمه لقراءة محتوى الملف الذي حصلنا عليه من قاعدة البيانات FileWriter هنا قمنا بإنشاء كائن من الكلاس
FileWriter fw = new FileWriter("c:\\retrivedFile.txt");
// fw في الملف الذي يشير إليه الكائن r بواسطة الحلقة التالية قمنا بنسخ محتوى الملف الذي يشير إليه الكائن
int c;
while ((c = r.read()) != -1) {
fw.write((char)c);
}
// هنا قمنا بإغلاق الملف
fw.close();
// هنا قمنا بإغلاق الإتصال مع قاعدة البيانات
con.close();
}
catch(Exception e) {
System.out.println(e.getMessage());
}
}
}
// هنا قمنا بإستدعاء الكلاسات و الإنترفيسات التي سنستخدمها للتعامل مع الملفات و قاعدة البيانات import java.io.Reader; import java.io.FileWriter; import java.sql.Clob; 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 file FROM employee WHER id=?"); // هنا قمنا بتمرير الرقم 44 مكان علامة الإستفهام الموضوعة في الإستعلام pstmt.setInt(1, 44); // rs هنا قمنا بتنفيذ الإستعلام و تخزين النتيجة في الكائن ResultSet rs = pstmt.executeQuery(); // لأننا نعلم حتماً أن نتيجة الإستعلام ستكون عبارة عن سطر واحد rs هنا توجهنا مباشرةً لأول سطر موجود في الكائن rs.next(); // لأننا سنستخدمه لجلب محتوى الملف من قاعدة البيانات Clob هنا قمنا بإنشاء كائن من الإنترفيس Clob clob = rs.getClob(1); // clob لأننا سنستخدمه لقراءة محتوى الملف الذي يشير إليه الكائن FileReader هنا قمنا بإنشاء كائن من الكلاس Reader r = clob.getCharacterStream(); // لأننا سنستخدمه لقراءة محتوى الملف الذي حصلنا عليه من قاعدة البيانات FileWriter هنا قمنا بإنشاء كائن من الكلاس FileWriter fw = new FileWriter("c:\\retrivedFile.txt"); // fw في الملف الذي يشير إليه الكائن r بواسطة الحلقة التالية قمنا بنسخ محتوى الملف الذي يشير إليه الكائن int c; while ((c = r.read()) != -1) { fw.write((char)c); } // هنا قمنا بإغلاق الملف fw.close(); // هنا قمنا بإغلاق الإتصال مع قاعدة البيانات con.close(); } catch(Exception e) { System.out.println(e.getMessage()); } } }

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