Javaالإنترفيس DatabaseMetaData
في جافا
- مقدمة
- دوال الإنترفيس
DatabaseMetaData
- مثال شامل
مقدمة
الإنترفيس DatabaseMetaData
يوفر مجموعة ضخمة من الدوال التي يمكن إستخدامها لمعرفة معلومات متعلقة بقاعدة البيانات التي تتعامل معها. مثل:
- إسم قاعدة البيانات ( Database Name ).
- إصدار قاعدة اليبانات ( Database Version ).
- رابط الوصول لقاعدة البيانات ( Database URL ).
- الأوامر الموجودة في قاعدة البيانات ( Database Keywords ).
- إسم الـ Driver المستخدم ( Driver Name ).
- إصدار الـ Driver المستخدم ( Driver Version ).
- أسماء الجداول الموجودة في قاعدة البيانات ( Tables Names ).
- إسم المستخدم المتصل بقاعدة البيانات من التطبيق ( User Name ).
للحصول على كائن DatabaseMetaData
من كائن الـ Connection
نستدعي الدالة getMetaData()
.
بناؤه
public interface DatabaseMetaData extends Wrapper
دوال الإنترفيس DatabaseMetaData
الجدول التالي يحتوي على دوال الإنترفيس DatabaseMetaData
.
الدالة مع تعريفها | |
---|---|
1 | public String getUserName()
ترجع إٍسم المستخدم المعرف في قاعدة البيانات و المتصل بها حالياً من التطبيق.ترمي الإستثناء SQLException في حال حدث خطأ عند محاولة الإتصال بقاعدة البيانات. |
2 | public String getDatabaseProductName()
ترجع إسم البرنامج الذي تم بواسطته إنشاء قاعدة البيانات.ترمي الإستثناء SQLException في حال حدث خطأ عند محاولة الإتصال بقاعدة البيانات. |
3 | public String getDatabaseProductVersion()
ترجع إصدار البرنامج الذي تم بواسطته إنشاء قاعدة البيانات.ترمي الإستثناء SQLException في حال حدث خطأ عند محاولة الإتصال بقاعدة البيانات. |
4 | public String getDriverName()
ترجع إسم الـ Driver المستخدم للإتصال بقاعدة البيانات.ترمي الإستثناء SQLException في حال حدث خطأ عند محاولة الإتصال بقاعدة البيانات. |
5 | public String getDriverVersion()
ترجع إصدار الـ Driver المستخدم للإتصال بقاعدة البيانات.ترمي الإستثناء SQLException في حال حدث خطأ عند محاولة الإتصال بقاعدة البيانات. |
6 | public String getURL()
ترجع نص يمثل رابط الوصول لقاعدة البيانات أو null في حال لم تتمكن من إرجاعه.ترمي الإستثناء SQLException في حال حدث خطأ عند محاولة الإتصال بقاعدة البيانات. |
7 | public ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types)
ترجع وصف لجميع الجداول الموجودة في كاتالوج قاعدة البيانات ككائن من الكلاس ResultSet .كل سطر ترجعه يمثل معلومات جدول محدد.يمكنك وضع null مكان أي باراميتر في حال كنت لا تعرف ماذا يجب أن تضع.مكان الباراميتر tableNamePattern يمكنك تحديد الجدول الذي تريد إرجاع وصف له.مكان الباراميتر types يمكنك تحديد أنواع الجداول التي تريد إرجاع وصف لها.يتم ترتيب معلومات الأعمدة الموجودة في كل جدول كالتالي:
ملاحظة: بعض قواعد البيانات لا ترجع معلومات حول جميع الجداول الموجودة فيها. ترمي الإستثناء SQLException في حال حدث خطأ عند محاولة الإتصال بقاعدة البيانات. |
مثال شامل
في المثال التالي سنفترض أننا سنقوم بالإتصال بقاعدة بيانات إسمها company
تمثل قاعدة بيانات لشركة, و مبنية بنظام MySQL.
بعدها سنقوم بإضافة بطباعة المعلومات التالية:
- إسم و إصدار الـ Driver الذي إستخدمناه للإتصال بقاعدة البيانات.
- إسم و إصدار البرنامج الذي إستخدمناه لبناء قاعدة البيانات من الأساس.
- إسم المستخدم المتصل بقاعدة البيانات من البرنامج.
- رابط الوصول لقاعدة البيانات التي نتعامل معها.
- أسماء جميع الجداول الموجودة في قاعدة البيانات.
// هنا قمنا بإستدعاء الكلاسات و الإنترفيسات التي سنستخدمها للتعامل مع قاعدة البيانات import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; 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"); // و الذي سنستخدمه للحصول على معلومات تتعلق بقاعدة البيانات التي نتعامل معها DatabaseMetaData هنا قمنا بتجهيز كائن نوعه DatabaseMetaData dbmd = con.getMetaData(); // DatabaseMetaData هنا قمنا بعرض بعض المعلومات التي يمكننا معرفتها من خلال كائن الـ System.out.println("Driver Name:" +dbmd.getDriverName() ); System.out.println("Driver Version:" +dbmd.getDriverVersion() ); System.out.println("User Name:" +dbmd.getUserName() ); System.out.println("Database URL:" +dbmd.getURL() ); System.out.println("Database Product Name:" +dbmd.getDatabaseProductName() ); System.out.println("Databse Product Version:" +dbmd.getDatabaseProductVersion() ); // الموجودين في قاعدة البيانات (TABLES) حتى ترجع لنا فقط أسماء الجداول getTables() في الدالة argument هنا قمنا بتجهيز هذه المصفوفة لأننا سنمررها كـ String table[]={"TABLE"}; // rs هنا قمنا بجلب جميع المعلومات المتوفرة حول الجداول الموجودة في قاعدة البيانات, بعدها قمنا بتخزينهم في الكائن ResultSet rs = dbmd.getTables(null, null, null ,table); System.out.println("\nDatabse Tables names:"); // rs هنا أنشأنا حلقة تمر على جميع الأسطر التي تم تخزينها في الكائن while(rs.next()) { // rs هنا في كل دورة سيتم عرض إسم جدول من الأسماء الموجودة في الكائن System.out.println("- " + rs.getString(3)); } // هنا قمنا بإغلاق الإتصال مع قاعدة البيانات con.close(); } catch(Exception e) { System.out.println(e.getMessage()); } } }
لو كانت قاعدة البيانات موجودة و قمنا بتشغيل البرنامج, سيظهر لنا نتيجة تشبه النتيجة التالية عند تشغيل البرنامج.
Driver Name: MySQL Connector Java Driver Version: mysql-connector-java-5.1.40 ( Revision: 402933ef52cad9aa82624e80acbea46e3a701ce6 ) UserName: root Databse URL: jdbc:mysql://localhost:3306/company Database Product Name: MySQL Database Product Version: 5.6.17 Databse Tables names: - employee - customers - orders - projects - departements