إعلان
دورة تطوير التطبيقات باستخدام لغة JavaScript في هذه الدورة ستتعلم لغة جافا سكريبت, استخدام مكتبة React.js, بناء API الموقع بواسطة Node.js, تطوير تطبيق جوال باستخدام React Native, و في نهاية الدورة ستتعلم تطوير تطبيق محادثة شبيه بتطبيق WhatsApp. تعلم الآن
دورة تطوير واجهات المستخدم في هذه الدورة ستتعلم لغة HTML و لغة CSS و لغة JavaScript. من ناحية التطبيق العملي ستتعلم طريقة بناء واجهة متجر إلكتروني مكون من ست صفحات, تحويل خمسة تصاميم PSD إلى صفحات ويب, بناء واجهة مستخدم تشبه موقع يوتيوب, بناء لوحة تحكم إحترافية. تعلم الآن
تطوير تطبيقات باستخدام لغة بايثون في هذه الدورة ستتعلم أساسيات البرمجة بلغة بايثون وصولاً إلى التعامل مع أشهر أطر العمل (Flask و Django) و ستتعلم كيف تبني متجر إلكتروني يمكن للمستخدمين البيع و الشراء من خلاله. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة PHP في هذه الدورة ستتعلم لغة PHP من الصفر, استخدام إطار العمل Laravel بشرح مفصّل و عملي, كيفية تطوير شبكة اجتماعية تشبه Instagram, بناء API لتطبيق جوال وفق أسلوب RESTful, تطوير موقع إعلانات مبوبة, تطوير نظام إدارة محتوى CMS كامل. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة Ruby في هذه الدورة ستتعلم البرمجة بلغة Ruby إنطلاقاً من أبسط المفاهيم وحتى بناء تطبيق حقيقي, إستخدام إطار العمل Ruby on Rails بشرح مفصّل و عملي, بناء تطبيق حقيقي عبارة عن شبكة اجتماعية تشبه تويتر, تطوير مجتمع الكتروني يشبه حسوب I/O. تعلم الآن
دورة علوم الحاسوب هذه الدورة معدة لتكون مدخل لعلوم الحاسوب و لغات البرمجة حيث ستتعرف فيها على أنظمة التشغيل و ستتعمق في نظام لينكس و في كيفية التعامل معه من خلال موجه الأوامر, بالإضافة إلى قواعد البيانات و أساسيات الشبكات و الخوادم و مبادئ الحماية والأمان في الويب. تعلم الآن

    Java الإنترفيس ResultSetMetaData في جافا

    مقدمة

    الإنترفيس ResultSetMetaData يستخدم لمعرفة معلومات تتعلق بالجدول ( أو الجداول ) المخزنة في كائن الـ ResultSet, مثل:

    • أسماء الجداول المخزنة فيه.
    • عدد الأعمدة المخزنة فيه.
    • أسماء الأعمدة المخزنة فيه.
    • أنواع البيانات التي يمكن تخزينها في الأعمدة إلخ..

    للحصول على كائن ResultSetMetaData نستدعي الدالة getMetaData() من كائن الـ ResultSet.


    بناؤه

    public interface ResultSetMetaData
    extends Wrapper
    	

    دوال الإنترفيس ResultSetMetaData

    الجدول التالي يحتوي على دوال الإنترفيس ResultSetMetaData.

    الدالة مع تعريفها
    public int getColumnCount() ترجع عدد الأعمدة الموجودة في كائن الـ ResultSet.

    ترمي الإستثناء SQLException في حال حدث خطأ عند محاولة الإتصال بقاعدة البيانات.
    public String getColumnName(int column) تستخدم لمعرفة أسماء الأعمدة الموجودة في كائن الـ ResultSet.
    عند إستدعاءها نمرر لها Index العمود الذي نريد معرفة إسمه فترجعه لنا كنص عادي.

    ترمي الإستثناء SQLException في حال حدث خطأ عند محاولة الإتصال بقاعدة البيانات.
    public String getTableName(int column) تستخدم لمعرفة إسم الجدول الذي أتى منه العمود الموجود في كائن الـ ResultSet.
    عند إستدعاءها نمرر لها Index العمود فترجع لنا إسم الجدول الذي أتى منه كنص عادي.
    ترجع نص فارغ "" في حال لم تستطع تحديد إسم الجدول.

    ترمي الإستثناء SQLException في حال حدث خطأ عند محاولة الإتصال بقاعدة البيانات.
    public String getColumnTypeName(int column) تستخدم لمعرفة نوع البيانات الموجودة في كائن الـ ResultSet.
    عند إستدعاءها نمرر لها Index العمود الذي نريد معرفة نوعه.

    ترمي الإستثناء SQLException في حال حدث خطأ عند محاولة الإتصال بقاعدة البيانات.
    public String getColumnClassName(int column) تستخدم لمعرفة نوع البيانات المتوفر في لغة جافا و الملائم لتخزين بيانات جدول محدد موجود في كائن الـ ResultSet.
    عند إستدعاءها نمرر لها Index العمود الذي نريد معرفة نوع البيانات التي يمكن تخزينها فيه, فترجعه لنا.

    ترمي الإستثناء SQLException في حال حدث خطأ عند محاولة الإتصال بقاعدة البيانات.
    public int getColumnDisplaySize(int column) ترجع عدد الأحرف الأقصى التي يمكن تخزينها في عمود محدد من الأعمدة الموجودة في كائن الـ ResultSet.
    عند إستدعاءها نمرر لها Index العمود الذي نريد معرفة عدد الأحرف الأقصى التي يمكن تخزينها فيه.

    ترمي الإستثناء SQLException في حال حدث خطأ عند محاولة الإتصال بقاعدة البيانات.
    public int getPrecision(int column) ترجع عدد البيانات الأقصى التي يمكن تخزينها في عمود محدد من الأعمدة الموجودة في كائن الـ ResultSet.
    عند إستدعاءها نمرر لها Index العمود الذي نريد معرفة عدد البيانات الأقصى التي يمكن تخزينها فيه, فترجعه لنا كـ int.

    ترمي الإستثناء SQLException في حال حدث خطأ عند محاولة الإتصال بقاعدة البيانات.
    public boolean isAutoIncrement(int column) تستخدم لمعرفة ما إذا كانت الأرقام الموجودة في عمود محدد من الأعمدة الموجودة في كائن الـ ResultSet تزداد بشكل تلقائي.
    عند إستدعاءها نمرر لها Index العمود الذي نريد معرفة ما إذا كانت الأرقام فيه تزداد بشكل تلقائي, فترجع true إذا كانت كذلك. غير ذلك ترجع false.

    ترمي الإستثناء SQLException في حال حدث خطأ عند محاولة الإتصال بقاعدة البيانات.
    public boolean isCaseSensitive(int column) تستخدم لمعرفة ما إذا كان يهم أن نكتب إسم العمود تماماً كما هو معرف في قاعدة البيانات أم لا في حال أردنا الوصول إليه من خلال إسمه. أي للتأكد ما إذا كان يهم إذا كتبنا إسم العمود بأحرف كبيرة أو أحرف صغيرة عند تجهيز الإستعلام.
    عند إستدعاءها نمرر لها Index العمود الذي نريد معرفة ما إذا كان يمكن كتابة إسمه بأحرف كبيرة أو صغيرة.
    ترجع true إذا كان حجم الحرف لا يسبب مشكلة. غير ذلك ترجع false.

    ترمي الإستثناء SQLException في حال حدث خطأ عند محاولة الإتصال بقاعدة البيانات.
    public boolean isCurrency(int column) تستخدم لمعرفة ما إذا كان العمود الموجود في كائن الـ ResultSet مخصص لتخزين رقم يمثل قمية مالية ( مثل دولار, ليرة, يورو إلخ.. ) أم لا.
    عند إستدعاءها نمرر لها Index العمود الذي نريد معرفة ما إذا كان مخصص لتخزين قيمة مالية أم لا.
    ترجع true إذا كان كذلك. غير ذلك ترجع false.

    ترمي الإستثناء SQLException في حال حدث خطأ عند محاولة الإتصال بقاعدة البيانات.
    public boolean isDefinitelyWritable(int column) تستخدم لمعرفة ما إذا كانت الكتابة في عمود محدد في كائن الـ ResultSet مسموحة و مضمونة مئة في المئة أم أنه يوجد إحتمال أن لا يسمح لنا بذلك.
    عند إستدعاءها نمرر لها Index العمود الذي نريد معرفة ما إذا كان من الممكن أن نكتب فيه بيانات أم لا.
    ترجع true إذا كان يمكن الكتابة فيه. غير ذلك ترجع false.

    ترمي الإستثناء SQLException في حال حدث خطأ عند محاولة الإتصال بقاعدة البيانات.
    public boolean isReadOnly(int column) تستخدم لمعرفة إذا كان يمكن فقط قراءة البيانات الموجودة في عمود محدد في كائن الـ ResultSet أم لا.
    أي يمكن إستخدامها أيضاً لمعرفة ما إذا كان من الممكن الكتابة في العمود أم لا, لأنه إذا كان يمكن فقط القراءة من العمود فهذا يعني أن الكتابة فيه غير مسموحة.
    عند إستدعاءها نمرر لها Index العمود الذي نريد معرفة ما إذا كان يمكننا فقط قراءة البيانات الموجودة فيه أم لا.
    ترجع true إذا كان يمكن فقط قراءة بياناته. غير ذلك ترجع false.

    ترمي الإستثناء SQLException في حال حدث خطأ عند محاولة الإتصال بقاعدة البيانات.

    مثال شامل

    في المثال التالي سنفترض أننا سنقوم بالإتصال بقاعدة بيانات إسمها company تمثل قاعدة بيانات لشركة, و مبنية بنظام MySQL.
    بعدها سنقوم بجلب جميع البيانات الموجودة في جدول الموظفين ( employee ) و تخزينها في كائن من الإنترفيس ResultSet.
    سنفترض أن جدول الموظفين يتألف من أربعة أعمدة ( id, name, email, phone ).
    بعدها سننشئ كائن من الإنترفيس ResultSetMetaData و نربطه بكائن الـ ResultSet لعرض خصائص البيانات الموجودة فيه.


    Main.java
    // هنا قمنا بإستدعاء الكلاسات و الإنترفيسات التي سنستخدمها للتعامل مع قاعدة البيانات
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSetMetaData;
    import java.sql.ResultSet;
    import java.sql.PreparedStatement;
     
    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","thepassword");
     
                //// و الذي سنستخدمه لإرسال الإستعلام إلى قاعدة البيانات PreparedStatement هنا قمنا بتجهيز كائن نوعه
                PreparedStatement ps = con.prepareStatement("select * from employee");
     
                // rs هنا قمنا بإرسال الإستعلام إلى قاعدة البيانات و الذي سيرجع لنا جميع الموجودة في جدول الموظفين. بعدها قمنا بتخزين النتيجة في الكائن
                ResultSet rs = ps.executeQuery();
     
                // rs و الذي سنستخدمه لعرض خصائص البيانات الموجودة في الكائن rsmd هنا قمنا بإنشاء الكائن
                ResultSetMetaData rsmd = rs.getMetaData();
     
                // rs هنا قمنا بعرض خصائص البيانات الموجودة في الكائن
                System.out.println("First column:  "+rsmd.getColumnName(1)+" ("+rsmd.getColumnTypeName(1)+")");
                System.out.println("Second column: "+rsmd.getColumnName(2)+" ("+rsmd.getColumnTypeName(2)+")");
                System.out.println("Third column:  "+rsmd.getColumnName(3)+" ("+rsmd.getColumnTypeName(3)+")");
                System.out.println("Fourth column: "+rsmd.getColumnName(4)+" ("+rsmd.getColumnTypeName(4)+")");
                System.out.println("------------------------------------------------------");
                System.out.println("Total number of columns: "+rsmd.getColumnCount());
                System.out.println("------------------------------------------------------");
                System.out.println("First column is from the table : "+rsmd.getTableName(1));
                System.out.println("------------------------------------------------------");
                System.out.println("Is First Column have the property AUTOINCREMENT? "+rsmd.isAutoIncrement(1));
                System.out.println("Is currancy the datatype of the first column?    "+rsmd.isCurrency(1));
                System.out.println("Is First Column have the property READONLY?      "+rsmd.isReadOnly(1));
     
                // هنا قمنا بإغلاق الإتصال مع قاعدة البيانات
                con.close();
            }
            catch(Exception e) {
                System.out.println(e.getMessage());
            }
     
        }
     
    }
    		

    لو كانت قاعدة البيانات موجودة و قمنا بتشغيل البرنامج, سيظهر لنا نتيجة تشبه النتيجة التالية عند تشغيل البرنامج.

    First column:  id (INT)
    Second column: name (VARCHAR)
    Third column:  email (VARCHAR)
    Fourth column: phone (VARCHAR)
    ------------------------------------------------------
    Total number of columns: 4
    ------------------------------------------------------
    First column is from the table : employee
    ------------------------------------------------------
    Is First Column have the property AUTOINCREMENT? true
    Is currancy the datatype of the first column?    false
    Is First Column have the property READONLY?      false
    		
    إعلان

    Eqla3Tech.com

    شروحات مكتوبة حول لغات البرمجة و تقنية المعلومات باللغة العربية مقدمة من إقلاع تك.

    لغة جافا لغة ++C قواعد البيانات نظام ويندوز نظام لينكس الشبكات تقنية المعلومات الأمن السيبراني

    الدورات

    أدوات مساعدة

    الأقسام

    دورات
    مقالات أسئلة مشاريع كتب