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

Javaمثال عملي حول 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());
}
}
}
// هنا قمنا بإستدعاء الكلاسات و الإنترفيسات التي سنستخدمها للتعامل مع قاعدة البيانات 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 سجلات في جدول الموظفين.