Javaمثال عملي حول Transaction Management باستخدام الكلاس Statement في جافا
في المثال التالي سنفترض أننا سنقوم بالإتصال بقاعدة بيانات إسمها company
تمثل قاعدة بيانات لشركة و مبنية بنظام MySQL.
يوجد في هذه القاعدة جدول خاص للموظفين إسمه employee
.
في البداية سنجهز إستعلام الهدف منه إضافة موظف جديد في جدول الموظفين كلما قمنا بتنفيذه.
بعدها, سنقوم بتجهيز خمسة إستعلامات, لتنفيذهم دفعة واحدة في قاعدة البيانات.
ملاحظة: سنطبق مفهوم الـ Transaction Management باستخدام الإنترفيس Statement
.
مثال
// هنا قمنا بإستدعاء الكلاسات و الإنترفيسات التي سنستخدمها للتعامل مع قاعدة البيانات 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 سجلات في جدول الموظفين.