العمل مع قواعد البيانات باستخدام JDBC في جافا
ما هو JDBC في جافا؟
JDBC (Java Database Connectivity) هو إطار عمل يُستخدم لتمكين الاتصال بين برامج جافا وقواعد البيانات. باستخدام JDBC، يمكن للمطورين إجراء العمليات الأساسية على قواعد البيانات مثل إنشاء، قراءة، تحديث، وحذف البيانات (CRUD Operations) بسهولة. يتضمن JDBC مجموعة من الفئات والواجهات التي تسهل التعامل مع قواعد البيانات من خلال جافا.
خطوات العمل مع JDBC في جافا
للتعامل مع قواعد البيانات باستخدام JDBC، يجب اتباع الخطوات التالية:
- تحميل برنامج التشغيل (Driver) الخاص بقاعدة البيانات: يجب أولاً تحميل برنامج التشغيل المناسب للتواصل مع قاعدة البيانات.
- إنشاء اتصال بقاعدة البيانات: يتم استخدام الفئة
DriverManager
لإنشاء اتصال بقاعدة البيانات. - إنشاء عبارة SQL وتنفيذها: يتم إنشاء عبارة SQL وتنفيذها باستخدام كائن
Statement
أوPreparedStatement
. - معالجة النتائج: يتم معالجة النتائج المسترجعة من قاعدة البيانات باستخدام كائن
ResultSet
. - إغلاق الاتصال: يجب إغلاق الاتصال بعد الانتهاء من جميع العمليات لتجنب تسريبات الذاكرة.
الاتصال بقاعدة البيانات باستخدام JDBC
في البداية، عليك التأكد من إضافة مكتبة JDBC الخاصة بقاعدة البيانات التي تعمل عليها إلى مشروعك، مثل MySQL JDBC Driver إذا كنت تعمل مع قاعدة بيانات MySQL. الصيغة العامة للاتصال بقاعدة بيانات هي:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Main {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "root";
String password = "password";
try (Connection connection = DriverManager.getConnection(url, username, password)) {
System.out.println("تم الاتصال بقاعدة البيانات بنجاح.");
} catch (SQLException e) {
System.out.println("فشل الاتصال بقاعدة البيانات: " + e.getMessage());
}
}
}
في هذا المثال، قمنا بالاتصال بقاعدة بيانات MySQL باسم mydatabase
باستخدام عنوان URL الخاص بها، واسم المستخدم، وكلمة المرور. استخدمنا العبارة try-with-resources
لضمان إغلاق الاتصال تلقائيًا بعد الانتهاء.
إنشاء جدول في قاعدة البيانات باستخدام JDBC
لإنشاء جدول جديد في قاعدة البيانات، يمكنك استخدام عبارة CREATE TABLE
. مثال:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Main {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "root";
String password = "password";
try (Connection connection = DriverManager.getConnection(url, username, password);
Statement statement = connection.createStatement()) {
String sql = "CREATE TABLE IF NOT EXISTS students (" +
"id INT PRIMARY KEY AUTO_INCREMENT, " +
"name VARCHAR(50), " +
"age INT)";
statement.execute(sql);
System.out.println("تم إنشاء الجدول بنجاح.");
} catch (SQLException e) {
System.out.println("فشل إنشاء الجدول: " + e.getMessage());
}
}
}
في هذا المثال، قمنا بإنشاء جدول باسم students
يحتوي على ثلاثة أعمدة: id
، name
، و age
. استخدمنا عبارة IF NOT EXISTS
لضمان عدم تكرار إنشاء الجدول إذا كان موجودًا مسبقًا.
إدراج بيانات في جدول باستخدام JDBC
يمكنك إدراج بيانات في جدول باستخدام عبارة INSERT
. مثال:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Main {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "root";
String password = "password";
try (Connection connection = DriverManager.getConnection(url, username, password);
Statement statement = connection.createStatement()) {
String sql = "INSERT INTO students (name, age) VALUES ('أحمد', 25), ('سارة', 22), ('محمد', 28)";
int rowsInserted = statement.executeUpdate(sql);
System.out.println("تم إدراج " + rowsInserted + " صفوف في الجدول.");
} catch (SQLException e) {
System.out.println("فشل إدراج البيانات: " + e.getMessage());
}
}
}
في هذا المثال، قمنا بإدراج ثلاثة صفوف من البيانات في جدول students
باستخدام عبارة INSERT
.
قراءة البيانات من قاعدة البيانات باستخدام JDBC
يمكنك قراءة البيانات من جدول باستخدام عبارة SELECT
. مثال:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Main {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "root";
String password = "password";
try (Connection connection = DriverManager.getConnection(url, username, password);
Statement statement = connection.createStatement()) {
String sql = "SELECT * FROM students";
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
int age = resultSet.getInt("age");
System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age);
}
} catch (SQLException e) {
System.out.println("فشل قراءة البيانات: " + e.getMessage());
}
}
}
في هذا المثال، قمنا باسترجاع جميع البيانات من جدول students
باستخدام عبارة SELECT
، ثم قمنا بطباعة البيانات باستخدام ResultSet
.
تحديث البيانات في جدول باستخدام JDBC
يمكنك تحديث البيانات في جدول باستخدام عبارة UPDATE
. مثال:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Main {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "root";
String password = "password";
try (Connection connection = DriverManager.getConnection(url, username, password);
Statement statement = connection.createStatement()) {
String sql = "UPDATE students SET age = 23 WHERE name = 'سارة'";
int rowsUpdated = statement.executeUpdate(sql);
System.out.println("تم تحديث " + rowsUpdated + " صفوف.");
} catch (SQLException e) {
System.out.println("فشل تحديث البيانات: " + e.getMessage());
}
}
}
في هذا المثال، قمنا بتحديث عمر الطالبة سارة في جدول students
باستخدام عبارة UPDATE
.
حذف البيانات من جدول باستخدام JDBC
يمكنك حذف البيانات من جدول باستخدام عبارة DELETE
. مثال:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Main {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "root";
String password = "password";
try (Connection connection = DriverManager.getConnection(url, username, password);
Statement statement = connection.createStatement()) {
String sql = "DELETE FROM students WHERE name = 'محمد'";
int rowsDeleted = statement.executeUpdate(sql);
System.out.println("تم حذف " + rowsDeleted + " صف.");
} catch (SQLException e) {
System.out.println("فشل حذف البيانات: " + e.getMessage());
}
}
}
في هذا المثال، قمنا بحذف الصف الذي يحتوي على اسم الطالب “محمد” من جدول students
باستخدام عبارة DELETE
.
تمرين (مستوى متوسط): إنشاء برنامج لإدارة الطلاب باستخدام JDBC
في هذا التمرين، سنقوم بإنشاء برنامج بسيط لإدارة بيانات الطلاب باستخدام JDBC. البرنامج يجب أن يحتوي على العمليات التالية:
المتطلبات:
- إنشاء قاعدة بيانات جديدة باسم
school
وجدولstudents
يحتوي على الأعمدةid
،name
، وage
. - إدراج ثلاثة طلاب في الجدول باستخدام عبارة
INSERT
. - استرجاع البيانات وطباعة جميع الطلاب باستخدام عبارة
SELECT
. - تحديث عمر أحد الطلاب باستخدام عبارة
UPDATE
. - حذف طالب من الجدول باستخدام عبارة
DELETE
.
الكود:
import java.sql.*;
public class StudentManager {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/school";
String username = "root";
String password = "password";
try (Connection connection = DriverManager.getConnection(url, username, password);
Statement statement = connection.createStatement()) {
// إنشاء جدول الطلاب
String createTableSQL = "CREATE TABLE IF NOT EXISTS students (" +
"id INT PRIMARY KEY AUTO_INCREMENT, " +
"name VARCHAR(50), " +
"age INT)";
statement.execute(createTableSQL);
// إدراج بيانات الطلاب
String insertSQL = "INSERT INTO students (name, age) VALUES " +
"('أحمد', 25), " +
"('سارة', 22), " +
"('محمد', 28)";
statement.executeUpdate(insertSQL);
// استرجاع البيانات وطباعة جميع الطلاب
String selectSQL = "SELECT * FROM students";
ResultSet resultSet = statement.executeQuery(selectSQL);
System.out.println("الطلاب المسجلين:");
while (resultSet.next()) {
System.out.println("ID: " + resultSet.getInt("id") +
", Name: " + resultSet.getString("name") +
", Age: " + resultSet.getInt("age"));
}
// تحديث عمر أحد الطلاب
String updateSQL = "UPDATE students SET age = 23 WHERE name = 'سارة'";
statement.executeUpdate(updateSQL);
// حذف طالب من الجدول
String deleteSQL = "DELETE FROM students WHERE name = 'محمد'";
statement.executeUpdate(deleteSQL);
System.out.println("تم تنفيذ جميع العمليات بنجاح.");
} catch (SQLException e) {
System.out.println("حدث خطأ: " + e.getMessage());
}
}
}
شرح الكود:
- قمنا بإنشاء اتصال بقاعدة البيانات
school
باستخدامDriverManager
. - أنشأنا جدولًا باسم
students
، وأدرجنا ثلاثة طلاب في الجدول. - استرجعنا جميع الطلاب من الجدول وطبعنا بياناتهم، ثم قمنا بتحديث عمر أحد الطلاب وحذف طالب آخر.
جرّب تنفيذ هذا البرنامج بنفسك، وشارك نتيجتك معنا في التعليقات! إذا واجهتك أي مشكلة أو كان لديك سؤال، لا تتردد في طرحه.
خاتمة
في هذا الدرس، تعرفنا على كيفية استخدام JDBC للاتصال بقواعد البيانات وتنفيذ العمليات الأساسية مثل إنشاء، قراءة، تحديث، وحذف البيانات. نوصي بممارسة التمرين المقدم لاكتساب المزيد من الخبرة في التعامل مع قواعد البيانات في جافا. لا تنسَ ترك تعليق أو مشاركة هذا الدرس مع أصدقائك على وسائل التواصل الاجتماعي إذا وجدته مفيدًا!
اترك تعليقاً