أمثلة شاملة للتعامل مع قواعد البيانات في جافا

طريقة جلب بيانات من قاعدة البيانات في جافا

في المثال التالي سنفترض أننا سنقوم بالإتصال بقاعدة بيانات إسمها company تمثل قاعدة بيانات لشركة, و مبنية بنظام MySQL.
بعدها سنقوم بطباعة أسماء جميع الموظفين الموجودين فيها و المحفوظين في جدول إسمه employee.

تذكر: قبل البدء بكتابة الكود, لا تنسى أن تقوم بتحميل مكتبة الـ jar الخاصة بقواعد بيانات MySQL.


مثال

Main.java
        // هنا قمنا بإستدعاء الكلاسات و الإنترفيسات التي سنستخدمها للتعامل مع قاعدة البيانات
        import java.sql.Connection;
        import java.sql.DriverManager;
        import java.sql.ResultSet;
        import java.sql.Statement;

        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","pass");

        // و الذي سنستخدمه لإرسال إستعلامات إلى قاعدة البيانات Statement هنا قمنا بتجهيز كائن نوعه
        Statement stmt = con.createStatement();

        // rs هنا قمنا بإرسال إستعلام إلى قاعدة البيانات لجلب جميع الأسماء الموجودة في جدول الموظفين. بعدها قمنا بتخزين النتيجة في الكائن
        ResultSet rs = stmt.executeQuery("select name from employee");

        // ( ملاحظة: هنا كل سطر يحتوي على إسم واحد ) rs هنا أنشأنا حلقة تمر على جميع الأسطر التي تم تخزينها في الكائن
        while(rs.next()) {
        // rs هنا في كل دورة سيتم عرض إسم جديد من الأسماء الموجودة في الكائن
        System.out.println(rs.getString(1));
        }

        // هنا قمنا بإغلاق الإتصال مع قاعدة البيانات
        con.close();
        }
        catch(Exception e) {
        System.out.println(e.getMessage());
        }

        }

        }
      

لو كانت قاعدة البيانات موجودة و قمنا بتشغيل البرنامج, سيظهر لنا جميع الأسماء الموجودة في الحقل name كالتالي.

        Ahmad
        Fouad
        Said
        Rola
        Mohamad
        Rim
        Jana
        Salem
        Samir
        Abdullah
        ...
      
__________&&&______;&&&___________;

طريقة تجهيز إستعلام لتحديث معلومات موجودة في قاعدة بيانات في جافا

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


مثال

Main.java
        // هنا قمنا بإستدعاء الكلاسات و الإنترفيسات التي سنستخدمها للتعامل مع قاعدة البيانات
        import java.sql.Connection;
        import java.sql.DriverManager;
        import java.sql.PreparedStatement;

        // لأننا سنطلب من المستخدم إدخال بيانات أثناء تشغيل البرنامج Scanner هنا قمنا بإستدعاء الكلاس
        import java.util.Scanner;

        public class Main {

        public static void main(String[] args) {

        // و الذي سنحتاج إليه لإدخال بيانات من المستخدم input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
        Scanner input = new Scanner(System.in);

        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("UPDATE employee SET name = ? WHERE id = ?");

        // id الموظف الذي سيقوم بتغيير إسمه و وضعناه في المتغير ID هنا طلبنا من المستخدم إدخال
        System.out.print("Select Employee, Enter his ID: ");
        int id = input.nextInt();

        // name هنا طلبنا من المستخدم إدخال الإسم الجديد و وضعناه في المتغير
        System.out.print("Enter the new name: ");
        String name = input.next();

        // التي أدخلها المستخدم مكان أول علامة إستفهام موضوعة في الإستعلام name هنا قمنا بتمرير قيمة المتغير
        pstmt.setString(1, name);

        // التي أدخلها المستخدم مكان ثاني علامة إستفهام موضوعة في الإستعلام id هنا قمنا بتمرير قيمة المتغير
        pstmt.setInt(2, id);

        // هنا قمنا بتنفيذ الإستعلام
        pstmt.executeUpdate();

        // هنا قمنا بإغلاق الإتصال مع قاعدة البيانات
        con.close();
        }
        catch(Exception e) {
        System.out.println(e.getMessage());
        }

        }

        }
      

لو كانت قاعدة البيانات موجودة و قمنا بتشغيل البرنامج, سيطلب من المستخدم إدخال رقم ID الموظف الذي يريد تحديث إسمه.

قمنا بتعليم البيانات التي إنتظرنا البرنامج لإدخالها من لوحة المفاتيح باللون الأصفر.

Select Employee, Enter his ID: 1
Enter the new name: Ahmad
__________&&&______;&&&___________;

طريقة تجهيز إستعلام لجلب معلومات موجودة في قاعدة بيانات في جافا

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

في البداية سنجهز إستعلام الهدف منه عرض كافة المعلومات المتوفرة في الجدول حول موظف غير محدد.
بعدها, سنجعل البرنامج يطلب من المستخدم إدخال رقم الـ ID الخاص بالموظف الذي يريد عرض بياناته.

بعد إدخال الرقم سيقوم البرنامج بعرض جميع المعلومات المتوفرة حول الموظف الذي يحمل هذه الـ ID.


مثال

Main.java
        // هنا قمنا بإستدعاء الكلاسات و الإنترفيسات التي سنستخدمها للتعامل مع قاعدة البيانات
        import java.sql.Connection;
        import java.sql.DriverManager;
        import java.sql.ResultSet;
        import java.sql.PreparedStatement;

        // لأننا سنطلب من المستخدم إدخال بيانات أثناء تشغيل البرنامج Scanner هنا قمنا بإستدعاء الكلاس
        import java.util.Scanner;

        public class Main {

        public static void main(String[] args) {

        // input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
        Scanner input = new Scanner(System.in);

        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 * FROM employee WHERE id = ?");

        // id الموظف الذي يريد معرفة المعلومات المتوفرة حوله و وضعناه في المتغير ID هنا طلبنا من المستخدم إدخال
        System.out.print("Select employee, enter his ID: ");
        int id = input.nextInt();

        // التي أدخلها المستخدم مكان علامة الإستفهام الموضوعة في الإستعلام id هنا قمنا بتمرير قيمة المتغير
        pstmt.setInt(1, id);

        // rs هنا قمنا بتنفيذ الإستعلام و تخزين النتيجة في الكائن
        ResultSet rs = pstmt.executeQuery();

        // لأننا نعلم حتماً أن نتيجة الإستعلام ستكون عبارة عن سطر واحد rs هنا توجهنا مباشرةً لأول سطر موجود في الكائن
        rs.next();

        // rs هنا قمنا بتنفيذ الإستعلام و تخزين النتيجة في الكائن
        System.out.println("\nAll existing information about this employee are the following:");
        System.out.println("ID:         " + rs.getInt(1));
        System.out.println("First Name: " + rs.getString(2));
        System.out.println("Last Name:  " + rs.getString(3));
        System.out.println("Email:      " + rs.getString(4));
        System.out.println("Phone:      " + rs.getString(5));

        // هنا قمنا بإغلاق الإتصال مع قاعدة البيانات
        con.close();
        }
        catch(Exception e) {
        System.out.println(e.getMessage());
        }

        }

        }
      

لو كانت قاعدة البيانات موجودة و قمنا بتشغيل البرنامج, سيطلب من المستخدم إدخال رقم ID الموظف الذي يريد معرفة كافة المعلومات المتعلقة به.

قمنا بتعليم البيانات التي إنتظرنا البرنامج لإدخالها من لوحة المفاتيح باللون الأصفر.

Select employee, enter his ID: 5

All existing information about this employee are the following:
ID:         5
First Name: Ziad
Last Name:  Harmoush
Email:      ziad.h@gmail.com
phone:      +96103555442
__________&&&______;&&&___________;

مثال عملي حول فكرة Batch Processing باستخدام الكلاس Statement

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

في البداية سنجهز إستعلام الهدف منه إضافة موظف جديد في جدول الموظفين كلما قمنا بتنفيذه.
بعدها, سنقوم بتجهيز خمسة إستعلامات, لتنفيذهم دفعة واحدة في قاعدة البيانات.

ملاحظة: سنطبق مفهوم الـ Batch Processing باستخدام الإنترفيس Statement.


مثال

Main.java
        // هنا قمنا بإستدعاء الكلاسات و الإنترفيسات التي سنستخدمها للتعامل مع قاعدة البيانات
        import java.sql.Connection;
        import java.sql.DriverManager;
        import java.sql.Statement;

        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","pass");

        // لا يحفظ أي تحديث نجريه على قاعدة البيانات من البرنامج بشكل تلقائي con هنا جعلنا الكائن
        con.setAutoCommit(false);

        // و الذي سنستخدمه لإرسال إستعلامات إلى قاعدة البيانات Statement هنا قمنا بتجهيز كائن نوعه
        Statement stmt = con.createStatement();

        // هنا قمنا بتجهيز 5 إستعلامات في لائحة خاصة
        stmt.addBatch("INSERT INTO employee(fname, lname, email, phone) VALUES('Mhamad', 'Harmush', 'mhamad@gmail.com', '+961123456')");
        stmt.addBatch("INSERT INTO employee(fname, lname, email, phone) VALUES('Ziad', 'Masri', 'ziad@gmail.com', '+961112233')");
        stmt.addBatch("INSERT INTO employee(fname, lname, email, phone) VALUES('Wissam', 'Mostafa', 'wissam@hotmail.com', '+96103876542')");
        stmt.addBatch("INSERT INTO employee(fname, lname, email, phone) VALUES('Nader', 'Karim', 'nader1985@outlook.com', '+96170180190')");
        stmt.addBatch("INSERT INTO employee(fname, lname, email, phone) VALUES('Rola', 'Dannawi', 'rola.d@gmail.com', '+96180776543')");

        // هنا قمنا بتنفيذ الإستعلامات التي قمنا بتجهيزها سابقاً
        stmt.executeBatch();

        // هنا قمنا بحفظ التحديثات التي أجريناها على قاعدة البيانات
        con.commit();

        // هنا قمنا بإغلاق الإتصال مع قاعدة البيانات
        con.close();
        }
        catch(Exception e) {
        System.out.println(e.getMessage());
        }

        }

        }
      

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

__________&&&______;&&&___________; example-5

مثال عملي حول فكرة Batch Processing باستخدام الكلاس PreparedStatement

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

في البداية سنجهز إستعلام الهدف منه إضافة موظف جديد في جدول الموظفين بناءاً على المعلومات التي يدخلها المستخدم.
بعدها, سنجعل البرنامج يسأل المستخدم إذا كان يريد إضافة معلومات موظف جديد في قاعدة البيانات أم لا.

في حال أراد إضافة مستخدم جديد, سيطلب منه إدخال بيانات الموظف, بعدها سيتم وضع الإستعلام في لائحة خاصة تسمى Batch List.
في حال لم يريد إضاف أي مستخدم جديد, سيقوم بتنفيذ جميع الإستعلامات التي تم تجهيزها و بالتالي سيضيف جميع المعلومات التي قام المستخدم بإدخالها سابقاً دفعة واحدة.

ملاحظة: سنطبق مفهوم الـ Batch Processing باستخدام الإنترفيس PreparedStatement.


مثال

Main.java
        // هنا قمنا بإستدعاء الكلاسات و الإنترفيسات التي سنستخدمها للتعامل مع قاعدة البيانات
        import java.sql.Connection;
        import java.sql.DriverManager;
        import java.sql.PreparedStatement;

        // لأننا سنطلب من المستخدم إدخال بيانات أثناء تشغيل البرنامج Scanner هنا قمنا بإستدعاء الكلاس
        import java.util.Scanner;

        public class Main {

        public static void main(String[] args) {

        // و الذي سنحتاج إليه لإدخال بيانات من المستخدم input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
        Scanner input = new Scanner(System.in);

        // سنستخدم هذه المتغيرات لحفظ المعلومات التي يدخلها المستخدم عند تشغيل البرنامج
        String firstName;
        String lastName;
        String email;
        String phone;

        // سنستخدم قيمة هذا المتغير كشرط أساسي لإدخال أو عدم إدخال مستخدم جديد
        char addUser;

        try {
        // الذي سنعتمد عليه للوصول إلى قاعدة البيانات MYSQL Driver هنا قمنا بتحديد رابط الوصول لبرنامج الـ
        Class.forName("com.mysql.jdbc.Driver");

        // و الذي سنستخدمه لتحديد المعلومات الأساسية التي نحتاجها للإتصال بقاعدة البيانات Connection هنا قمنا بإنشاء كائن من الكلاس
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/company","root","password");

        // لا يحفظ أي تحديث نجريه على قاعدة البيانات من البرنامج بشكل تلقائي con هنا جعلنا الكائن
        con.setAutoCommit(false);

        // و الذي سنستخدمه لإرسال إستعلامات إلى قاعدة البيانات بناءاً على المعلومات التي يدخلها المستخدم PreparedStatement هنا قمنا بتجهيز كائن نوعه
        PreparedStatement pstmt = con.prepareStatement("INSERT INTO employee(fname,lname,email,phone) VALUES(?,?,?,?)");

        // 'y' تساوي addUser هنا أنشأنا حلقة تعيد تكرار ما فيها طالما أن قيمة المتغير
        do {
        // في كل مرة يريد فيها إدخال بيانات موظف جديد. في حال أدخل حرف آخر لن يطلب منه من جديد 'y' هنا سيطلب من المستخدم إدخال الحرف
        System.out.print("\nIf you want to add a new user, enter 'y': ");
        addUser = input.next().charAt(0);

        // سيطلب منه إدخال معلومات الموظف و سيتم تخزين كل واحدة منهم في متغير مختلف 'y' في حال قام المستخدم بإدخال الحرف
        if(addUser == 'y')
        {
        System.out.print("Enter first name: ");
        firstName = input.next();

        System.out.print("Enter last name: ");
        lastName = input.next();

        System.out.print("Enter email address: ");
        email = input.next();

        System.out.print("Enter phone number: ");
        phone = input.next();

        // هنا قمنا بتمرير قيم المتغيرات التي تحتوي على بيانات الموظف مكان علامات الإستفهام الموضوعة في الإستعلام
        pstmt.setString(1, firstName);
        pstmt.setString(2, lastName);
        pstmt.setString(3, email);
        pstmt.setString(4, phone);

        // batch هنا قمنا بإضافة الإستعلام في لائحة الخاصة بالـ
        pstmt.addBatch();
        }
        }while(addUser == 'y');

        // هنا قمنا بتنفيذ الإستعلامات التي قمنا بتجهيزها سابقاً في اللائحة
        pstmt.executeBatch();

        // هنا قمنا بحفظ التحديثات التي أجريناها على قاعدة البيانات
        con.commit();

        // هنا قمنا بإغلاق الإتصال مع قاعدة البيانات
        con.close();
        }
        catch(Exception e) {
        System.out.println(e.getMessage());
        }

        }

        }
      

قمنا بتعليم البيانات التي إنتظرنا البرنامج لإدخالها من لوحة المفاتيح باللون الأصفر.

If you want to add a new user, enter 'y': y
Enter first name: Mhamad
Enter last name: Harmush
Enter email address: mhamad@gmail.com
Enter phone number: 70123456

If you want to add a new user, enter 'y': y
Enter first name: Hala
Enter last name: Hassan
Enter email address: hala@hotmail.com
Enter phone number: 76002112

If you want to add a new user, enter 'y': y
Enter first name: Jad
Enter last name: Asmar
Enter email address: jad@outlook.com
Enter phone number: 81222345

If you want to add a new user, enter 'y': n
__________&&&______;&&&___________;

مثال عملي حول فكرة Transaction Management باستخدام الكلاس Statement

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

في البداية سنجهز إستعلام الهدف منه إضافة موظف جديد في جدول الموظفين كلما قمنا بتنفيذه.
بعدها, سنقوم بتجهيز خمسة إستعلامات, لتنفيذهم دفعة واحدة في قاعدة البيانات.

ملاحظة: سنطبق مفهوم الـ Transaction Management باستخدام الإنترفيس Statement.


مثال

Main.java
        // هنا قمنا بإستدعاء الكلاسات و الإنترفيسات التي سنستخدمها للتعامل مع قاعدة البيانات
        import java.sql.Connection;
        import java.sql.DriverManager;
        import java.sql.Statement;

        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","pass");

        // لا يحفظ أي تحديث نجريه على قاعدة البيانات من البرنامج بشكل تلقائي con هنا جعلنا الكائن
        con.setAutoCommit(false);

        // و الذي سنستخدمه لإرسال إستعلامات إلى قاعدة البيانات Statement هنا قمنا بتجهيز كائن نوعه
        Statement stmt = con.createStatement();

        // commit() هنا قمنا بتجهيز 5 إستعلامات لن يتم تنفيذهم إلا عند إستدعاء الدالة
        stmt.executeUpdate("INSERT INTO employee(fname, lname, email, phone) VALUES('Mhamad', 'Harmush', 'mhamad@gmail.com', '+961123456')");
        stmt.executeUpdate("INSERT INTO employee(fname, lname, email, phone) VALUES('Ziad', 'Masri', 'ziad@gmail.com', '+961112233')");
        stmt.executeUpdate("INSERT INTO employee(fname, lname, email, phone) VALUES('Wissam', 'Mostafa', 'wissam@hotmail.com', '+96103876542')");
        stmt.executeUpdate("INSERT INTO employee(fname, lname, email, phone) VALUES('Nader', 'Karim', 'nader1985@outlook.com', '+96170180190')");
        stmt.executeUpdate("INSERT INTO employee(fname, lname, email, phone) VALUES('Rola', 'Dannawi', 'rola.d@gmail.com', '+96180776543')");

        // هنا قمنا بحفظ التحديثات التي أجريناها على قاعدة البيانات
        con.commit();

        // هنا قمنا بإغلاق الإتصال مع قاعدة البيانات
        con.close();
        }
        catch(Exception e) {
        System.out.println(e.getMessage());
        }

        }

        }
      

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

__________&&&______;&&&___________;

مثال عملي حول فكرة Transaction Management باستخدام الكلاس PreparedStatement

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

في البداية سنجهز إستعلام الهدف منه إضافة موظف جديد في جدول الموظفين بناءاً على المعلومات التي يدخلها المستخدم.
بعدها, سنجعل البرنامج يسأل المستخدم إذا كان يريد إضافة معلومات موظف جديد في قاعدة البيانات أم لا.

في حال أراد إضافة مستخدم جديد, سيطلب منه إدخال بيانات الموظف, بعدها سيتم وضع الإستعلام قيد الإنتظار حتى يتم إستدعاء الدالة commit().
في حال لم يريد إضاف أي مستخدم جديد, سيقوم بتنفيذ جميع الإستعلامات التي تم تجهيزها و بالتالي سيضيف جميع المعلومات التي قام المستخدم بإدخالها سابقاً دفعة واحدة.

ملاحظة: سنطبق مفهوم الـ Transaction Management باستخدام الإنترفيس PreparedStatement.


مثال

Main.java
        // هنا قمنا بإستدعاء الكلاسات و الإنترفيسات التي سنستخدمها للتعامل مع قاعدة البيانات
        import java.sql.Connection;
        import java.sql.DriverManager;
        import java.sql.PreparedStatement;

        // لأننا سنطلب من المستخدم إدخال بيانات أثناء تشغيل البرنامج Scanner هنا قمنا بإستدعاء الكلاس
        import java.util.Scanner;

        public class Main {

        public static void main(String[] args) {

        // و الذي سنحتاج إليه لإدخال بيانات من المستخدم input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
        Scanner input = new Scanner(System.in);

        // سنستخدم هذه المتغيرات لحفظ المعلومات التي يدخلها المستخدم عند تشغيل البرنامج
        String firstName;
        String lastName;
        String email;
        String phone;

        // سنستخدم قيمة هذا المتغير كشرط أساسي لإدخال أو عدم إدخال مستخدم جديد
        char addUser;

        try {
        // الذي سنعتمد عليه للوصول إلى قاعدة البيانات MYSQL Driver هنا قمنا بتحديد رابط الوصول لبرنامج الـ
        Class.forName("com.mysql.jdbc.Driver");

        // و الذي سنستخدمه لتحديد المعلومات الأساسية التي نحتاجها للإتصال بقاعدة البيانات Connection هنا قمنا بإنشاء كائن من الكلاس
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/company","root","password");

        // لا يحفظ أي تحديث نجريه على قاعدة البيانات من البرنامج بشكل تلقائي con هنا جعلنا الكائن
        con.setAutoCommit(false);

        // و الذي سنستخدمه لإرسال إستعلامات إلى قاعدة البيانات بناءاً على المعلومات التي يدخلها المستخدم PreparedStatement هنا قمنا بتجهيز كائن نوعه
        PreparedStatement pstmt = con.prepareStatement("INSERT INTO employee(fname,lname,email,phone) VALUES(?,?,?,?)");

        // 'y' تساوي addUser هنا أنشأنا حلقة تعيد تكرار ما فيها طالما أن قيمة المتغير
        do {
        // في كل مرة يريد فيها إدخال بيانات موظف جديد. في حال أدخل حرف آخر لن يطلب منه من جديد 'y' هنا سيطلب من المستخدم إدخال الحرف
        System.out.print("\nIf you want to add a new user, enter 'y': ");
        addUser = input.next().charAt(0);

        // سيطلب منه إدخال معلومات الموظف و سيتم تخزين كل واحدة منهم في متغير مختلف 'y' في حال قام المستخدم بإدخال الحرف
        if(addUser == 'y')
        {
        System.out.print("Enter first name: ");
        firstName = input.next();

        System.out.print("Enter last name: ");
        lastName = input.next();

        System.out.print("Enter email address: ");
        email = input.next();

        System.out.print("Enter phone number: ");
        phone = input.next();

        // هنا قمنا بتمرير قيم المتغيرات التي تحتوي على بيانات الموظف مكان علامات الإستفهام الموضوعة في الإستعلام
        pstmt.setString(1, firstName);
        pstmt.setString(2, lastName);
        pstmt.setString(3, email);
        pstmt.setString(4, phone);

        // commit() هنا قمنا بتجهيز إستعلام لن يتم تنفيذه إلا عند إستدعاء الدالة
        pstmt.executeUpdate();
        }
        }while(addUser == 'y');

        // هنا قمنا بحفظ التحديثات التي أجريناها على قاعدة البيانات
        con.commit();

        // هنا قمنا بإغلاق الإتصال مع قاعدة البيانات
        con.close();
        }
        catch(Exception e) {
        System.out.println(e.getMessage());
        }

        }

        }
      

قمنا بتعليم البيانات التي إنتظرنا البرنامج لإدخالها من لوحة المفاتيح باللون الأصفر.

If you want to add a new user, enter 'y': y
Enter first name: Mhamad
Enter last name: Harmush
Enter email address: mhamad@gmail.com
Enter phone number: 70123456

If you want to add a new user, enter 'y': y
Enter first name: Hala
Enter last name: Hassan
Enter email address: hala@hotmail.com
Enter phone number: 76002112

If you want to add a new user, enter 'y': y
Enter first name: Jad
Enter last name: Asmar
Enter email address: jad@outlook.com
Enter phone number: 81222345

If you want to add a new user, enter 'y': n
__________&&&______;&&&___________;

طريقة تخزين ملف نصي في قاعدة البيانات في جافا

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


مثال

Main.java
        // هنا قمنا بإستدعاء الكلاسات و الإنترفيسات التي سنستخدمها للتعامل مع الملفات و قاعدة البيانات
        import java.io.FileReader;
        import java.sql.Connection;
        import java.sql.DriverManager;
        import java.sql.PreparedStatement;

        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("INSERT INTO employee(id, file) VALUES(?,?)");

        // لأننا سنستخدمه لقراءة محتوى الملف الذي سنضعه في قاعدة البيانات FileReader هنا قمنا بإنشاء كائن من الكلاس
        FileReader fr = new FileReader("c:\\myfile.txt");

        // هنا قمنا بتمرير الرقم 44 مكان أول علامة إستفهام موضوعة في الإستعلام
        pstmt.setInt(1, 44);

        // هنا قمنا بتمرير الكائن الذي يشير إلى الملف و تمرير حجمه أيضاً مكان ثاني علامة إستفهام موضوعة في الإستعلام
        pstmt.setCharacterStream(1, fr, (int)fr.length());

        // هنا قمنا بتنفيذ الإستعلام
        pstmt.executeUpdate();

        // هنا قمنا بإغلاق الإتصال مع قاعدة البيانات
        con.close();
        }
        catch(Exception e) {
        System.out.println(e.getMessage());
        }

        }

        }
      

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

__________&&&______;&&&________;

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

في المثال التالي سنفترض أننا سنقوم بالإتصال بقاعدة بيانات إسمها 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());
        }

        }

        }
      

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

__________&&&______;&&&___________;

طريقة تخزين ملف صوتي, صورة, فيديو في قاعدة البيانات في جافا

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


مثال

Main.java
        // هنا قمنا بإستدعاء الكلاسات و الإنترفيسات التي سنستخدمها للتعامل مع الملفات و قاعدة البيانات
        import java.io.FileInputStream;
        import java.sql.Connection;
        import java.sql.DriverManager;
        import java.sql.PreparedStatement;

        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("INSERT INTO employee(id, image) VALUES(?,?)");

        // لأننا سنستخدمه لقراءة محتوى الصورة التي سنضعها في قاعدة البيانات FileInputStream هنا قمنا بإنشاء كائن من الكلاس
        FileInputStream fis = new FileInputStream("d:\\my-image.png");

        // هنا قمنا بتمرير الرقم 44 مكان أول علامة إستفهام موضوعة في الإستعلام
        pstmt.setInt(1, 44);

        // هنا قمنا بتمرير الكائن الذي يشير إلى الصورة و تمرير حجمها أيضاً مكان ثاني علامة إستفهام موضوعة في الإستعلام
        pstmt.setBinaryStream(2, fis, fis.available());

        // هنا قمنا بتنفيذ الإستعلام
        pstmt.executeUpdate();

        // هنا قمنا بإغلاق الإتصال مع قاعدة البيانات
        con.close();
        }
        catch(Exception e) {
        System.out.println(e.getMessage());
        }

        }

        }
      

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

__________&&&______;&&&___________;

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

في المثال التالي سنفترض أننا سنقوم بالإتصال بقاعدة بيانات إسمها 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());
        }

        }

        }
      

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