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 الخاص بالموظف الذي يريد عرض بياناته.

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