[JDBC]الاتصال بقواعد بيانات MS Access فى Java 8 باستخدام UcanaccessDriver

اذهب الى الأسفل

[JDBC]الاتصال بقواعد بيانات MS Access فى Java 8 باستخدام UcanaccessDriver Empty [JDBC]الاتصال بقواعد بيانات MS Access فى Java 8 باستخدام UcanaccessDriver

مُساهمة من طرف أحمد مناع في الجمعة فبراير 08, 2019 2:03 pm

اهلا بكم 

منذ عدة سنوات كتب مقال عن [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] لكن من بداية الاصدار الثامن للجافا تمت إزالة  JDBC-ODBC من Java SE 8 و بالتالى فهو لم يعد مدعوم من قبل الجافا وذلك لا سباب عدة منها مثلا :

_لا يعمل [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] بشكل صحيح مع قواعد بيانات [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] عندما يحتوي النص على أحرف [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] بنقاط تعليمات برمجية أعلى U+00FF ، لذا فإن هذا الإعداد لن يكون قادراً على التعامل مع أحرف مثل اليونانية والروسية والصينية والعربية وغيرها

_سائق الاتصال [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] تم انتاجة من قبل [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] و بالتالى فهو يعمل فقط فى انظمة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] وهناك إصدارات منفصلة 32 بت و 64 بت من Access Database Engine (وبرنامج تشغيل ODBC) التي يمكن أن تكون مصدر إزعاج نشر و توزيع تطبيقك.

لذلك في هذه المقالة ، سوف نتعلم الخطوات الازمة للاتصال بقاعدة بيانات MS Access في Java 8 وذلك من خلال سائق الاتصال الجديد [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

الخطوة الاولى : تحميل سائق الاتصال ucanaccess

[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] هو سائق تشغيل Java JDBC خالص يتيح لنا القراءة والكتابة إلى قواعد بيانات [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] بدون استخدام [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]. ويستخدم حزمتين أخريين هما [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] و [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

ويمكنك تحميل هذا السائق من العنوان التالى :

[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

بعد تحميل الملف المضغوط قم بفك الضغط ليظهر لك الملفات التالية :

ucanaccess-4.0.1.jar  
 /lib/
   commons-lang-2.6.jar  
   commons-logging-1.1.1.jar  
   hsqldb.jar  
   jackcess-2.1.6.jar  

الخطوة الثانية : إضافة المكتبات اعلاه الى بيئة التطوير

كل ما عليك القيام به هو إضافة جميع (5) JARs إلى مشروعك من خلال بيئة التطوير الخاصة بك و ذلك على النحو التالى :

1_Eclipse

انقر بزر الماوس الأيمن فوق المشروع ثم أختر الامر "Package Explorer" من القائمة التى ستظهر اختر "Build Path"> "Configure Build Path" .... انقر فوق الزر "Add External JARs" لإضافة كل من JARs خمس (5). عند الانتهاء ، يجب أن يظهر Java Build Path على هذا النحو :

[JDBC]الاتصال بقواعد بيانات MS Access فى Java 8 باستخدام UcanaccessDriver UZOjj

2_NetBeans

قم بالنقر بزر الماوس الأيمن على مجلد "Libraries" واختر "Add JAR / Folder ..." ، ثم استعرض إلى ملف JAR

[JDBC]الاتصال بقواعد بيانات MS Access فى Java 8 باستخدام UcanaccessDriver DVN3d

لتظهر لك الملفات بالشكل التالى :

[JDBC]الاتصال بقواعد بيانات MS Access فى Java 8 باستخدام UcanaccessDriver E5FKa


3_IntelliJ IDEA

من خلال القائمة File > Project Structure ...أختر الامر Libraries ثم انقر فوق الزر "إضافة" (+) وأضف ملفات JAR الخمسة (5). وبمجرد الانتهاء من ذلك ، يجب أن يبدو المشروع كالتالي:

[JDBC]الاتصال بقواعد بيانات MS Access فى Java 8 باستخدام UcanaccessDriver AnOp5

الخطوة الثالثة : شفرة الاتصال بقاعدة بيانات أكسس من خلال ucanaccess

مجرد أن نكون قد اتممنا الخطوات المذكورة أعلاه ثم يمكننا المضي قدما فى كتابة الشفرة الخاصة بالاتصال بقاعدة بيانات MS Access database
...لذلك سنفترض فى المثال التالى أن قاعدة البيانات المراد الاتصال بها تسمي Player.accdb ....ثم اتبع الخطوات التالية :

1_ قم بنقل قاعدة البيانات Player.accdb التى قمت بإنشائها و المراد الاتصال بها الى المجلد الرئسيى للمشروع الذى قمت بإنشائة من خلال

2_نقوم استدعاء جميع الدوال التابعه للمكتبه [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] و ايضا ادراج المكتبه التي تتعامل مع صناديق الحوار [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] كما تعلمنا سابقا و على النحو التالى :

الكود:

import java.sql.*;
import javax.swing.JOptionPane;

3_الاعلان عن الكائنات التى تستخدم لاتمام عملية ربط قاعدة البيانات مع البرنامج باستخدام الكائنات كما تعلمنا سابقا وهى : الكائن [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] وهو الخاص بنص الاتصال ...الكائن [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] وهو الخاص بجمل التحكم ....و الكائن [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] وهو الخاص بمؤشر البيانات وذلك عن طريق الكود التالى :

الكود:
Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;

4_نقوم بكتابة الكود التالى لتحميل JDBC Driver الخاص بقواعد البيانات اكسس و ذلك على النحو التالى :

الكود:
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");

كما فى السطر السابق قمن باستدعاء الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] وذلك لتحميل الفصيلة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] التي تحتوي على مشغل قاعدة البيانات ...و تحميل هذه الفصيلة قد يتسببفي حدوث استثناء في حالة أن الفصيلة المطلوبة لا يمكن تحميلها وهذا الاستثناء هو [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] و بالتالى سنقوم بمعالجة هذا الاستثناء بالتعديل على الكود اعلاه على النحو التالى :

الكود:
try {
 
            Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
        }
        catch(ClassNotFoundException cnfex) {
 
            
           JOptionPane.showMessageDialog(null,cnfex.getMessage());
          
        }

5_نقوم بأستدعاء الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] الموجودة فى الفصيلة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] مع تمرير عنوان او رابط ملف قاعدة البيانات  Player.accdb  الية و ذلك عن طريق الكود التالى :

الكود:
String msAccDB = "/Player.accdb";
            String dbURL = "jdbc:ucanaccess://"+ msAccDB;
            
            connection = DriverManager.getConnection(dbURL);

يقوم هذا السطر بعملية اتصال بقاعدة البيانات عن طريق نص الاتصال dbc:ucanaccess://"+ msAccDB ثم وضعنا أسم قاعدة البيانات Player.accdb فى المتغير  [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] ولكن في حالة عدم القدرة على الاتصال بقاعدة البيانات سيحدث الاستثناء SQLException لذلك سوف يتم معالجة كما فعلنا فى الدرس السابق .

6_نقوم بإستدعاء الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] لايجاء الكائن [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] والذي سيستخدم للاستعلام من قاعدة البيانات وذلك عن طريق الكود التالى :
الكود:
statement = connection.createStatement();

7_نفيذ الاستعلام من خلال استدعاء الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] الموجودة فى الصنف [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] و الذى قد عبرنا عنه بالكائن [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] و ذلك على النحو التالى :

الكود:
resultSet = statement.executeQuery("SELECT * FROM PLAYER");

8_حلقة دوران للحصول على قيم جدول البيانات ومعالجة البيانات التي تم إرجاعها ومن ثم طباعتها على النحو التالى :

الكود:
while(resultSet.next()) {
                System.out.println(resultSet.getInt(1) + "\t" +
                        resultSet.getString(2) + "\t" +
                        resultSet.getString(3) + "\t" +
                        resultSet.getString(4));
            }

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

الكود:

import java.sql.*;
import javax.swing.JOptionPane;


public class DoConnect {
    
public static void main(String[] args) {
 
        // variables
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
 
        
        try {
 
            Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
        }
        catch(ClassNotFoundException cnfex) {
             JOptionPane.showMessageDialog(null,cnfex.getMessage());
        }
        try {
 
            String msAccDB = "/Player.accdb";
            String dbURL = "jdbc:ucanaccess://"+ msAccDB;
            
            connection = DriverManager.getConnection(dbURL);
 
            statement = connection.createStatement();
 
            resultSet = statement.executeQuery("SELECT * FROM PLAYER");
 
            System.out.println("ID\tName\t\t\tAge\tMatches");
            System.out.println("==\t================\t===\t=======");
 
          
            while(resultSet.next()) {
                System.out.println(resultSet.getInt(1) + "\t" +
                        resultSet.getString(2) + "\t" +
                        resultSet.getString(3) + "\t" +
                        resultSet.getString(4));
            }
        }
        catch(SQLException sqlex){
            sqlex.printStackTrace();
        }
        finally {
            
            try {
                if(null != connection) {
                    
                    resultSet.close();
                    statement.close();
                   connection.close();
                }
            }
            catch (SQLException sqlex) {
                sqlex.printStackTrace();
            }
        }
    }
    
}


تحياتى لكم

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
أحمد مناع
أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 949
النقاط : 201714
التقيم : 113
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى