الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفيه انشاء مشروع باستخدام MySQL ارتباطا مع الجافا

رائج
بدأه Mahmoud Kelany في 6 يونيو 2010 · 41 رد · 21,332 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

اود ان اقدم لكم درسا قد سال عنه الجميع فى منتدانا الحبيب

وهناك الكثير من الاستفسارات عن هذا المووضوع

الا وهو كيفيه ربط قواعد البيانات باستخدام MySQL مع لغه الجافا

ناتى الى مرحلتين الا وهى كيفيه عمل قاعده بيانات مبسطه مكونه من جدول واحد باستخدام MySQL

ثم كيفيه الربط مع اللغه الغاليه الجافا

تابع معى الشرح المدعم بالصور

ناتى الى البدايه ان نقوم بتسطيب برنامج MySQL والـ GUI tools الخاصه به

" لم انشاء له شرح " يمكنك البحث وان لم تستطع ممكن نشرح تسطيبه ان شاء الله

بعد ذلك

نذهب ونفتح البرنامج

post-9738-030307400 1277950559_thumb.jpg

وبعد ان نضغط على MySQL Adminstartor

فانه يتم فتح البرنامج واظاهر الشاشه التاليه

post-9738-063336000 1277950528_thumb.jpg

التى تطلب منك ادخال server host اللتى دائما ما نكتب فيها localhost

ورقم الـ port اذا لم تقم بتغيره فهو الثابت فى البرنامج 3306

اما اذا قمت بتغيره فضع الرقم الجديد

ويطلب منك اسم المستخدم والرقم السرى الخاص به

بعد ان يتاكد البرنامج من البيانات المدخله له

يتم ظهور الشاشه التاليه

post-9738-003070100 1277950542_thumb.jpg

ما يهمنا الان هو انشاء قواعد بيانات جديده ليس باقى الاشياء

انظر الى الصوره واتبع التعليمات الموضحه عليها

بعد ذلك يطلب منك ادخال اسم قاعده البيانات

post-9738-096951800 1277950589_thumb.jpg

وبعد ذلك ناتى الى مرحله ادراج جدول بيانات فى هذه القاعده

انظر الى الصوره التاليه

post-9738-027826900 1277950467_thumb.jpg

وبعدها ناتى الى ادخال اسم الجدول والبيانات الخاصه بالاعمده والوصف لها

موضحه فى الصوره التاليه

post-9738-013221900 1277950575_thumb.jpg

وبعد ان تقوم بكتابه الاعمده واسم الجدول تضغظ على Apply changes

اللتى تعرض لك امر انشاء الجدول وتاكد عليك هل هذا ما تريد انشاءه بالفعل ؟

post-9738-035946500 1277950515_thumb.jpg

وبعد ان يتم عمل قاعده البيانات نلاحظ انها فارغه

فنقوم بوضع بعض البيانات فى هذه القاعده يدويا حتى اذا ما طلبنا منها بيانات قبل ادارج البيانات بها تقوم بارجاع بيانات

لاحظ معى التالى

post-9738-049484700 1277950486_thumb.jpg

نقوم بادراج البيانات فى الجدول الخاص بهذه القاعده

ولكن عندما تظهر لنا الصفحه الخاصه بالتعديل

لابد من تنشيط الامر Edit

كما هو موضح بالصوره

post-9738-081091200 1277950499_thumb.jpg

وناتى بعد ذلك لادراج البيانات وبعد ادراج 4 صفوف نجدها بالشكل التالى

post-9738-028613500 1277950476_thumb.jpg

وقبل ان ننتهى فى اخر الصفحه نجد امر apply changes نقوم بالضغط عليه لكى يتم حفظ البيانات اللتى تم ادخالها

وهكذا تم انشاء قاعده بيانات MySQL

المره القادمه ان شاء الله سوف اعرض لكم كيفيه الربط

وكيفيه تنفيذ الاوامر مثل

select * from table 
insert into table 
delete recorde

انتظرونا ان شاء الله

لو لم يكون كابوس الامتحانات لكنت اكملت

الصور موجوده صنعتها بالامس لكن تحتاج الى شرح فقط

اتمنى ان اكون اخذت جانب هام لملاحظتى ان الكثيرين لديهم هذه المشكله

استودعكم الله

المرفقات
CreateTabel.jpgDataInDataBase.jpgEditTable.jpgEditTableEdit.jpgExquteTable.jpgloginSQL.jpgmakeNewSchema.jpgopenMySQL.jpgTableCoulm.jpgwriteSchemaName.jpg

تم تعديل هذه المشاركة بواسطة علاء الصالحي في 1 يوليو 2010 في 05:33 — السبب: نقل الصور على خادم الموقع

7 −2

Software Developer
Mahmoudkelany.com


 

#2

هلا بالمنتدى العظيم

ثانى مشاركة لى

و قرأت درسك استاذى و لكن لى تعقيب

اول سىء ان هالمنتدى مو مكان هالدرس

على ما اعتقد ثانى شى

ان الشرح مو واضح انا لا استطيع ان افهم الدرس

−3
#3

السلام عليكم ورحمة الله وبركاته

شرح طيب اخى ربنا يكرمك يارب

ممكن تضع رابط لتحميل البرنامج mysql

حتى اتمكن من المتابعة معك فى الشرح

جزاك ربى الجنة

سلام عليكم

#4

أحسنت أخ حمزاوي

أتمنى لك التوفيق :)

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#5

مجهود تشكر عليه

والله يعطيك العافية

ويوقويك على الامتحانات

وَعَبْدٌ قَدْ يَنامُ عَلَى حَرِيرٍ ××× وَذُو نَسَبٍ مَفَارِشُهُ التُّرَابُ

#6
موجة علم كتب:

هلا بالمنتدى العظيم

ثانى مشاركة لى

و قرأت درسك استاذى و لكن لى تعقيب

اول سىء ان هالمنتدى مو مكان هالدرس

على ما اعتقد ثانى شى

ان الشرح مو واضح انا لا استطيع ان افهم الدرس

اهلا بيك اخى الكريم

اولا المكان مناسب جدا

لو فيه مكان اخر احسن المشرفين يمكنهم نقل الموضوع الى المكان الصحيح

اعتقد ان انا ليس هدفى هو شرح برنامج mysql

انا اشرح كيفيه ربط الجافا بقواعد البيانات وسوف اشرح كيفيه استدعاء البيانات من قواعد البيانات على الconsole window

وممكن ان كان هناك وقت ان نشرح كيفيه جلب البيانات وعرضها على جدول

1 −1

Software Developer
Mahmoudkelany.com


 

#7
M_Yehia كتب:

السلام عليكم ورحمة الله وبركاته

شرح طيب اخى ربنا يكرمك يارب

ممكن تضع رابط لتحميل البرنامج mysql

حتى اتمكن من المتابعة معك فى الشرح

جزاك ربى الجنة

سلام عليكم

وعليكم السلام ورحمه الله وبركاته

ربنا يخليك يارب

حاضر انا نسيت بصراحه كان فى بالى اضع الرابط

تحميل برنامج MySQL

تحميل GUI Tools

يمكنك اذن المتابعه

Software Developer
Mahmoudkelany.com


 

#8
علاء الصالحي كتب:

أحسنت أخ حمزاوي

أتمنى لك التوفيق :)

تحياتي

وسام شرف اضعه على راسى اخى علاء

كم زادنى شرفا مشاركتك

ان شاء الله نكمل الشرح بعون الله

ان لم يوجد عقبات

EMNALI كتب:

مجهود تشكر عليه

والله يعطيك العافية

ويوقويك على الامتحانات

ربنا يخليك يا اخى

شكرا على رد ومرروك

وان شاء الله فى اخر الدرس يكون مفيد

ويقويك يا اخى

سلام عليكم

Software Developer
Mahmoudkelany.com


 

#9

ناتى الان الى مرحله

شرح ارتباط قواعد البيانات بلغة الجافا

نقوم بعمل مشروع جافا عادى خالص

post-9738-024570600 1277951070_thumb.jpg

وبعد ذلك لكى يكون العمل لديك منظما

تعمل package لكى يتم اضافه بها الاوامر الخاصه بقواعد البيانات

post-9738-082081700 1277950982_thumb.jpg

وبعد ذلك نقوم باضافه الـ class لكى يتم كتابه بها اكواد الاتصال بقواعد البيانات

post-9738-081111700 1277951037_thumb.jpg

ولتكن فى مثالنا هذا

تدعى DBConnectivity

ونكتب بها الكود التالى

package DBConductivity;

import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Mahmoud Mahrous
 */
public class DBConnect {

    // <editor-fold defaultstate="collapsed" desc="private variables">
    private final String DRIVER = "com.mysql.jdbc.Driver";
    private final String URL = "jdbc:mysql://localhost:3306/arabteam2000-forum";
    private final String USER_NAME = "root";
    private final String PASS_WORD = "root";
    private Connection connection;
    private Statement statement;
    private ResultSet resultSet;// </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="DBConnect Constractor">
    public DBConnect() {
        try {
            Class.forName(DRIVER);
            connection = DriverManager.getConnection(URL, USER_NAME, PASS_WORD);
        } catch (SQLException ex) {
            Logger.getLogger(DBConnect.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(DBConnect.class.getName()).log(Level.SEVERE, null, ex);
        }
    }// </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="return DB connection">
    public Connection getConnection() {
        return connection;
    }// </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="excuteQuery">
    public ResultSet excuteQuery(String query) {
        try {
            statement = connection.createStatement();
            resultSet = statement.executeQuery(query);
        } catch (SQLException ex) {
            Logger.getLogger(DBConnect.class.getName()).log(Level.SEVERE, null, ex);
        }
        return resultSet;
    }// </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="excuteUpdate">
    public void excuteUpdate(String query) {
        try {
            statement.executeUpdate(query);
        } catch (SQLException ex) {
            Logger.getLogger(DBConnect.class.getName()).log(Level.SEVERE, null, ex);
        }
    }// </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="Connection is opened and should close">
    @Override
    public void finalize() {
        try {
            if (connection != null) {
                this.connection.close();
            }
        } catch (SQLException ex) {
            Logger.getLogger(DBConnect.class.getName()).log(Level.SEVERE, null, ex);
        }
    }// </editor-fold>
}

الكود الخاص باستدعاء هذه الـ class

يعنى Main Class

package arabteam2000forum;

import DBConductivity.DBConnect;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 *
 * @author Mahmoud Mahrous
 */
public class Main {

    /**
 	* @param args the command line arguments
 	*/
    public static void main(String[] args) throws SQLException {
        DBConnect dBConnect = new DBConnect(); // make DBConnect by making object form it
        dBConnect.getConnection(); // return the connection
        ResultSet resultSet = dBConnect.excuteQuery("select * from arabteam2000forum "); // excuteQuery that select all colums in the table
        while (resultSet.next()) {    // the pointer to the database recorde
            // print the values that is in the data base
            // resultset.getInt(1) that show that the first colum in the data base is integer or number type
            // resultset.getString(2) that show that the second colum in the data base is varchar(size) type
            // resultset.getString(3) that show that the third colum in the data base is varchar(size) type[
            System.out.println(resultSet.getInt(1) + "  " + resultSet.getString(2) + "  " + resultSet.getString(3));
        }
    }
}

سوف نقوم لاحقا بشرح الاوامر والكود خطوه خطوه

بعد ذلك عندما تعمل run للمشروع

تجد الخطا التالى

post-9738-083838100 1277951021_thumb.jpg

وهذا الخطا كما نرى ان الخطا هو ClassNotFoundException

هذا الخطا قد حدث بسبب انك قومت بتحميل الـ driver ولكنه لم يجدها فى المشروع تبعك

طب واعمل ايه ؟؟؟؟؟؟؟؟

هنعمل التالى

بزر الفاره الايمن على المشروع

واتبع الشرح التالى

post-9738-031265000 1277950999_thumb.jpg

وبعد ذلك تقوم بالضط على library ثم اختيار add libaray

واختار MySQL JDBC Driver

post-9738-093620500 1277951054_thumb.jpg

وقم باضافته للمشروع

وبعد ذلك قم بعمل run للمشروع تظهر لك على شاشه الconsole

post-9738-078946000 1277951009_thumb.jpg

ان شاء الله اشرح الكود جزء جزء ان شاء الله

قريبا

لتحميل المشروع و قاعده البيانات

من المرفقات

ملاحظة: وجد الأخ sahraoui17 مشكلة بسيطة في الكود يمكن الإطلا علىهذا الموضوع لأخذ فكرة عنها

arabteam2000-forum.rar

arabteam2000-forum 20100606 1039.rar

المرفقات
addPackages.jpgAddSQLToProject.jpgconsoleOutPut.jpgforNameError.jpgJavaClass.jpgLoadMySQLDriver.jpgmakeJavaProject.jpg

تم تعديل هذه المشاركة بواسطة علاء الصالحي في 5 يوليو 2012 في 15:52 — السبب: إضافة ملاحظة

5

Software Developer
Mahmoudkelany.com


 

#10

أخ حمزاوي الصور رجاءاً أعد رفعها على المنتدى

لأن الرفع على خادم خارجي يعني أننا لو سقط هذا الخادم أو حذف ملفاته سنفقد موضوعك للأبد

لذا أعد رفع الصور كمرفقات

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#11

انا اعمل على اكونت لدى على imageshack.us

على العموم

ارفعها كملف مضغوط

ولا ارفعها كلهم وراء بعض

ولا ايه ؟ ؟؟؟

Software Developer
Mahmoudkelany.com


 

#12

شكرا ً أخ حمزاوي على هذا الشرح ولكن ياليت يكون بالتفصيل الممل لكل الخطوات خصوصاً الكود حبذا لو تشرحه سطر سطر وبارك الله فيك .

#13
ToBeOrNotToBe كتب:

شكرا ً أخ حمزاوي على هذا الشرح ولكن ياليت يكون بالتفصيل الممل لكل الخطوات خصوصاً الكود حبذا لو تشرحه سطر سطر وبارك الله فيك .

العفو يا اخى

وان شاء الله نشرح الكود ويتفهم باذن الله

لكن الوقت نفسه

انا موجود لكن الوقت هو اللى ليس موجود

ان شاء الله قريبا

Software Developer
Mahmoudkelany.com


 

#14

لا ارفعها واحدة واحدة

بعد ذلك اضغط على إضافة إلى الموضوع

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#15

لازم تكون الصورة بامتداد png وقم بارفاقها مثل اى ملف اخر

وحدد المكان الذى تريده ثم اضغط على اضافة الى الموضوع

انظر الصورة

post-165385-12759468189958_thumb.png

وعلى فكرة الموضوع جميل

ومجرد ان تفكر فى كتابة موضوع شرح وتكمله (خلى بالك من الكلمة دى excl.gif )

فهذا مجهود كبير وروح طيبة منك تشكر عليهم

بالتوفيق

تم تعديل هذه المشاركة بواسطة MOHAMED FATHEI في 8 يونيو 2010 في 00:50


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#16

لقد عملت هذا الصنف الذي يقوم بالاتصال بقاعدة البيانات ماي سكول واستخدام قاعدة البيانات test واسترجاع البيانات الموجودة في الجدول test هذه الشفرة تعتبر أسهل من شهرة اخينا محمود الكيلاني (حمزاوي سابقا , نتمنى أن يقوم بشرح الشفرة الخاصة به ) حيث يوجد فيها بعض الاستثناءات التي لم افهمها

ملوحظة : قاعدة البيانات الخاصة بي عبارة عن جدول يوجد به حقلين للـ ID: عبارة عن مفتاح رئيسي وكذلك (auto - increment) والحقل الثاني عبارة عن Name من النوع النصي (Varchar)



import java.sql.*;

/**
*
* @author ToBeOrNotToBe
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Connection con = null;
try {
// uncomment this to make sure library was added secssefully.
// Class.forName("com.mysql.jdbc.Driver");
// do the connect to server on localhost with port number 3306, database name is test, user is 'root', with no password
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "");
// statement object.
Statement st = con.createStatement();
// exec the statement and get results.
String query = "select * from test";
ResultSet rs = st.executeQuery(query);
while (rs.next()/*move one line in the result table*/) {
// print the columen one and two of the result table as string you can use rs.getType(int or string)
System.out.println(rs.getInt(1)+ " " + rs.getString(2));

}
} catch (Exception e) {
e.printStackTrace();
System.out.println("Exception: " + e.getMessage());
} finally {
try {
if (con != null) {
con.close();
}
} catch (SQLException e) {
}
}

}
}

1
#17
علاء الصالحي كتب:

لا ارفعها واحدة واحدة

بعد ذلك اضغط على إضافة إلى الموضوع

تحياتي

ما التعديل لدى اتقفل

وعذرا على التاخير فى الرد مش اخدت بالى

لانى منشغل شويه بالمذاكره

MOHAMED FATHEI كتب:

لازم تكون الصورة بامتداد png وقم بارفاقها مثل اى ملف اخر

وحدد المكان الذى تريده ثم اضغط على اضافة الى الموضوع

انظر الصورة

post-165385-12759468189958_thumb.png

وعلى فكرة الموضوع جميل

ومجرد ان تفكر فى كتابة موضوع شرح وتكمله (خلى بالك من الكلمة دى excl.gif )

فهذا مجهود كبير وروح طيبة منك تشكر عليهم

بالتوفيق

لا مش لازم png

ما انا فاهم بس انا التعديل اتقفل عندى

ان شاء الله يكمل باذن الله اخلص بس واكمله على طول

متخفش ان شاء الله مخلى بالك :)

ربنا يخليك يارب

Software Developer
Mahmoudkelany.com


 

#18
ToBeOrNotToBe كتب:

لقد عملت هذا الصنف الذي يقوم بالاتصال بقاعدة البيانات ماي سكول واستخدام قاعدة البيانات test واسترجاع البيانات الموجودة في الجدول test هذه الشفرة تعتبر أسهل من شهرة اخينا محمود الكيلاني (حمزاوي سابقا , نتمنى أن يقوم بشرح الشفرة الخاصة به ) حيث يوجد فيها بعض الاستثناءات التي لم افهمها

ملوحظة : قاعدة البيانات الخاصة بي عبارة عن جدول يوجد به حقلين للـ ID: عبارة عن مفتاح رئيسي وكذلك (auto - increment) والحقل الثاني عبارة عن Name من النوع النصي (Varchar)



import java.sql.*;

/**
*
* @author ToBeOrNotToBe
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Connection con = null;
try {
// uncomment this to make sure library was added secssefully.
// Class.forName("com.mysql.jdbc.Driver");
// do the connect to server on localhost with port number 3306, database name is test, user is 'root', with no password
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "");
// statement object.
Statement st = con.createStatement();
// exec the statement and get results.
String query = "select * from test";
ResultSet rs = st.executeQuery(query);
while (rs.next()/*move one line in the result table*/) {
// print the columen one and two of the result table as string you can use rs.getType(int or string)
System.out.println(rs.getInt(1)+ " " + rs.getString(2));

}
} catch (Exception e) {
e.printStackTrace();
System.out.println("Exception: " + e.getMessage());
} finally {
try {
if (con != null) {
con.close();
}
} catch (SQLException e) {
}
}

}
}

الشفره واحد

بس هناك بعض الاضافات على الشفره

يعنى بدل ما اعمل السطر دا بالطريقه بتاعتك هذه

            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "");

قومت بعمل

 private final String URL = "jdbc:mysql://localhost:3306/arabteam2000-forum"; 
    private final String USER_NAME = "root"; 
    private final String PASS_WORD = "root"; 

connection = DriverManager.getConnection(URL, USER_NAME, PASS_WORD);

هذه الطريقه احسن كثيرا

لا تدخلك فى اعماق الكود عندما تريد ان تغير معلومات الاتصال من برنامج لاخر ومن قاعده لاخرى

وتتثبت فى متغيرات ثابته لا يمكن تغييرها

واضافه بعد الدوال الاخرى لكى تتكمن من عمل العمليات على قواعد البيانات

مثل داله 
    public ResultSet excuteQuery(String query) { 
{

وداله 
    public void excuteUpdate(String query) { 
}

وبعد ذلك قمت باغلاق الاتصال 
    public void finalize() { 
{

لو عاوزين شرح مفصل يقبى ان شاء الله شويه كدا بس اخلص امتحانات بس :ohmy: :ohmy:

بعد اذنكواطبعا استحملونى

سلام عليكم

2

Software Developer
Mahmoudkelany.com


 

#19

طيب يا محمد ارفعهم على شكل rar أو zip وأنا هعمل الباقي بإذن الله

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#20
علاء الصالحي كتب:

طيب يا محمد ارفعهم على شكل rar أو zip وأنا هعمل الباقي بإذن الله

تحياتي

انا محمود :lol: :lol:

المهم

انت تامر واحنا نطنش

يوووووه

ننفذ يا هندسه طبعا :) :)

شرح كل جزئيه فى ملف

Java.rar

MySQL.rar

Software Developer
Mahmoudkelany.com


 

#21

ماشي يا محمود بس أصلي لسه متعود على الأخ حمزاوي

اليومي دول هغيرهم بإذن الله

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#22
علاء الصالحي كتب:

ماشي يا محمود بس أصلي لسه متعود على الأخ حمزاوي

اليومي دول هغيرهم بإذن الله

تحياتي

لا ولا يهمك عادى

ليا اخ شقيق اسمه محمد :lol: :lol:

خلاص ماشى بالتوفيق

معلش تعبينك معانا :)

سلام عليكم

Software Developer
Mahmoudkelany.com


 

#23

تم الإضافة إلى المواضيع المميزة

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#24
علاء الصالحي كتب:

تم الإضافة إلى المواضيع المميزة

تحياتي

جزاكم الله خيرا

تصدق انا كنت نسيت :lol: :lol:

شكرا يا اخ علاء يا مميز :)

Software Developer
Mahmoudkelany.com


 

#25

أوعك تشكك في قدراتي يا محمود

لا أنا كنت مأخر علشان موضوع الصور كنت برفعها على المنتدى

وأعذرني على التأخير يا محمود

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

مواضيع مشابهة