الوقت/التاريخ الآن هو الخميس مايو 09, 2024 2:31 am

2 نتيجة بحث عن Class

[Java] الطرق المختلفة لانشاء الكائنات فى الجافا create objects in Java

اهلا بكم

كوننا مطورين جافا ، فإننا عادةً ما نتعامل بكثرة مع الكائنات #objects ، لكننا دائمًا ما نستخدم طريقة واحدة لإنشاء هذه الكائنات. ومع ذلك ، هناك المزيد من الطرق لإنشاء الكائنات فى الجافا ، والتي سنحاول دراستها في هذه المقالة.

1_ الطريقة الاولى إستخدام الكلمة new

إنها الطريقة الأكثر شيوعًا فى إنشاء الكائنات وذلك لانها تعتبر اسهل طريقة على الاطلاق لذلك فإن 98% من مطوري الجافا يستخدون هذا الطريقة . حيث من خلال استخدام هذه الطريقة ، يمكننا استدعاء أي دوال الفئة المنشء منها هذا الكائن حتى منشىء تلك الفئة #constructor ...ويتم استخدامها على النحو التالى :
الكود:
MyObject object = new MyObject();


ايضا يمكنك تمرير معلمات الى منشىء الفئة على النحو التالى :

الكود:
MyObject object = new MyObject(2,4);



2_الطريقة الثانية باستخدام الدالة Class.forName

إذا كنا نعرف اسم الفئة أو الكلاس التى نريد إنشاء كائن منها وما إذا كان لديها مُنشئ افتراضي عام ، فيمكننا إنشاء كائن جديد باستخدام الاسلوب #newInstance التابع للطريقة #Class.forName ...فمثلا اذا كانت الفئة #MyObject تنتمى الى الحزمة #test فاننا يمكننا انشاء كائن جديد منها على النحو التالى :

الكود:
MyObject object = (MyObject) Class.forName("test.MyObject").newInstance();


لكن تلك الطريقة فى إنشاء الكائنات ترمى الاستثنائات التالية :

ClassNotFoundException و InstantiationException , IllegalAccessException

لذلك يجب معالجتها على النحو التالى :

الكود:
try {
            MyObject object = (MyObject) Class.forName("test.MyObject").newInstance();
            
                        
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
        }



3_الطريقة الثالثة باستخدام الدالة clone()

فى الحقيقة أن هذه الطريقة لا تقوم بانشاء كائن جديد إنما تقوم بإنشاء نسخة من كائن موجود بالفعل و بالتالى فانت مجبر على إنشاء كائن بعد ذلك يمكن باستخدام الدالة #clone نسخ هذا الكائن الى كائن اخر على النحو التالى :

الكود:
MyObject anotherObject = new MyObject();
MyObject object = anotherObject.clone();


باستخدام أسلوب النسخ أعلاه لا يمكن استدعاء أي مُنشئ للفئة

4_ الطريقة الرابعة باستخدام مرجع الكائن object reference

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

الكود:
MyObject object ;



5_باستخدام إلغاء التسلسل deserialization

الكود:
ObjectInputStream inStream = new ObjectInputStream(new FileInputStream("data.obj"));
       MyObject object = (MyObject) inStream.readObject();
من طرف أحمد مناع
في السبت فبراير 16, 2019 6:01 pm
 
ابحث في: أساسيات اللغة Java Basics
موضوع: [Java] الطرق المختلفة لانشاء الكائنات فى الجافا create objects in Java
المساهمات: 0
مشاهدة: 1191

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

اهلا بكم 

منذ عدة سنوات كتب مقال عن [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] لكن من بداية الاصدار الثامن للجافا تمت إزالة  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 على هذا النحو :

الوسم class على المنتدى منتدى مصر التقني UZOjj

2_NetBeans

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

الوسم class على المنتدى منتدى مصر التقني DVN3d

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

الوسم class على المنتدى منتدى مصر التقني E5FKa


3_IntelliJ IDEA

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

الوسم class على المنتدى منتدى مصر التقني 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();
            }
        }
    }
    
}



تحياتى لكم
من طرف أحمد مناع
في الجمعة فبراير 08, 2019 2:03 pm
 
ابحث في: قواعد البيانات JAVA JDBC
موضوع: [JDBC]الاتصال بقواعد بيانات MS Access فى Java 8 باستخدام UcanaccessDriver
المساهمات: 1
مشاهدة: 2914

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

انتقل الى: