تعلم كيفية الاتصال بقواعد بيانات Oracle من خلال تطبيقات الجافا

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

تعلم كيفية الاتصال بقواعد بيانات Oracle من خلال تطبيقات الجافا

مُساهمة من طرف أحمد مناع في الأربعاء فبراير 19, 2014 10:18 am

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

أهلا وسهلا بكم إخوانى الكرام .... ما زلنا فى دروس قواعد البيانات من خلال تطبيقات الجافا و توفر هذه المقالة أمثلة عن كيفية تأسيس اتصال مع خادم قواعد بيانات أوراكل و لنفترض انه لديك بالفعل نسخة من قاعدة بيانات أوراكل مثبتة على جهازك مثل Oracle Database 11g Express Edition.

أولا : تحميل سائق الاتصال JDBC driver الخاص بقواعد بيانات أوراكل

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

و نحن هنا حددنا قاعدة بيانات أوراكل Oracle Database 11g الإصدار 2 (11.2.0.3) وهو ما يقودنا إلى صفحة التحميل لملف jar وعند دخولك لتلك الصفحة ستجد العديد من الملفات jar الذي قد يسبب الارتباك. ومع ذلك، فإن ملف jar  الرئيسي هو ojdbc5.jar لاصدار الجافا 5 أو ojdbc6.jar لاصدار الجافا 6 فما فوق ....

و بما أننا نستخدم أصدار الجافا 6 سنقوم بتحميل الملف ojdbc6.jar من خلال النقر على رابط التحميل و قبول اتفاقية الترخيص في الجزء العلوي بعد ذلك سنقوم بوضع الملف ojdbc6.jar كالمعتاد فى مسار التطبيق classpath

ملاحظة: يتطلب أوراكل أن يكون لديك حساب أوراكل للتحميل، لذلك قد تضطر إلى تسجيل حساب جديد إذا لم يكن لديك واحد بالفعل .

ثانيا : انواع الاتصال المختلفة التى يوفرها JDBC driver

يوفر سائق الاتصال JDBC driver أربعه أنواع مختلفة للاتصال بقواعد بيانات أوراكل :


  1. Thin Driver ................... ويستخدم هذا النوع للاستخدام من جانب العميل دون تثبيت أوراكل
  2. OCI Driver ................... و يستخدم هذا النوع للاستخدام من جانب العميل مع تثبيت أوراكل
  3. Server-Side Thin Driver ..هو نفس Thin Driver ولكن يعمل داخل خادم أوراكل للوصول إلى ملقم بعيد
  4. Server-Side Internal Driver ... تشغيل داخل الخادم


لذلك إذا كان JDBC client الخاص بك وخادم قاعدة البيانات أوراكل يتم تشغيلها على نفس الجهاز يجب عليك استخدام OCI Driver لأنها أسرع بكثير من سائق Thin Driver هذا من ناحية أما من ناحية أخرى فإن OCI Driver يمكن استخدام عملية الاتصالات بين IPC  في حين أن Thin Driver يمكن استخدام اجراء الاتصال من خلال الشبكة فقط

ثالثا : بناء نص الاتصال URL بقاعدة البيانات أوراكل

يتم بناء جملة URL لقاعدة بيانات أوراكل على النحو التالى :

jdbc:oracle:<drivertype>:@<database>

jdbc:oracle:<drivertype>:<user>/<password>@<database>

حيث أن :

  • drivertype .... يحدد نوع سائق الاتصال أما أن يكون thin أو  oci أو kprb.
  • database .... قاعدة بيانات أوراكل و يمكن أن تكون فى شكل hostname:port:SID أو تكون فى شكل tnsnames.ora


على سبيل المثال :

إذا كنت ترغب في الاتصال بقاعدة بيانات أوراكل مع SID productDB و التى لها أسم المستخدم tiger و كلمة المرور scott من خلال المنفذ الافتراضي و على المضيف  dbHost باستخدام Thin Driver يمكنك إنشاء عنوان URL على النحو التالي :

الرمز:
String url = “jdbc:oracle:thin:tiger/scott@dbHost:1521:productDB”

و إن كنت تريد أن يكون نوع الاتصال OCI Driver

على شبكة الانترنت
الرمز:
String url = “jdbc:oracle:oci:tiger/scott@dbHost:1521:productDB”

على السرفر المحلى localhost
الرمز:
String url = “jdbc:oracle:oci:tiger/scott@localhost:1521:productDB”


أما اذا كان لديك  TNSNAMES في ملف TNSNAMES.ORA، يمكنك إنشاء عنوان URL على النحو التالي:

الرمز:
String url = “jdbc:oracle:oci:@productionDB”


و أن كنت تستخدم Server-Side Internal Driver

الرمز:
String url = "jdbc:oracle:kprb:"


رابعا : تسجيل سائق الاتصال الى التطبيق

من أجل تسجيل سائق الاتصال الى التطبيق يتم ذلك بأحد الطرق التالية :

الرمز:
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());

أو

الرمز:
Class.forName("oracle.jdbc.OracleDriver");


خامسا :تأسيس اتصال مع قواعد بيانات أوراكل

من خلال سائق الاتصال JDBC، يمكننا تأسيس اتصال بقاعدة البيانات عن طريق استدعاء الاسلوب getConnection من الطبقة DriverManager. هناك ثلاثة إصدارات من هذا الأسلوب:

الرمز:

        static Connection getConnection(String url)
        static Connection getConnection(String url, Properties info)
        static Connection getConnection(String url, String user, String password)

ولذا فإننا يمكن أن يكون لها ثلاث طرق لإجراء اتصال على النحو التالي:


  • باستخدام URL فقط على كل شيء


في هذه الطريقة، ونحن تحديد جميع خصائص الاتصال في سلسلة URL واحد، على سبيل المثال:

الرمز:
String dbURL = "jdbc:oracle:thin:tiger/scott@localhost:1521:productDB";
Connection conn = DriverManager.getConnection(dbURL);
if (conn != null) {
    System.out.println("Connected");
}



  • باستخدام URL، اسم المستخدم وكلمة المرور


في هذه الطريقة، ونحن تمرير اسم المستخدم وكلمة المرور كوسائط إضافية إلى أسلوب getConnetion ()، على سبيل المثال:

الرمز:
String dbURL = "jdbc:oracle:thin:@localhost:1521:productDB";
String username = "tiger";
String password = "scott";
Connection conn = DriverManager.getConnection(dbURL, username, password);



  • باستخدام URL  والكائن خصائص Properties


في هذه الطريقة، ونحن نستخدم كائن java.util.Properties لحفظ المستخدم، كلمة المرور و خصائص إضافية أخرى به على سبيل المثال:
الرمز:
String dbURL = "jdbc:oracle:oci:@ProductDB";
Properties properties = new Properties();
properties.put("user", "scott");
properties.put("password", "tiger");
properties.put("defaultRowPrefetch", "20");
 
Connection conn = DriverManager.getConnection(dbURL, properties);


سادسا : انشاء مثال كامل

الان سنقوم بإنشاء بحيث يحدد ثلاث اتصالات مختلفة في 3 طرق المذكورة أعلاه، و أخيرا إغلاق كافة الاتصالات على النحو التالى :

الرمز:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
 
public class JdbcOracleConnection {
 
    public static void main(String[] args) {
 
        Connection conn1 = null;
        Connection conn2 = null;
        Connection conn3 = null;
 
        try {
            // registers Oracle JDBC driver - though this is no longer required
            // since JDBC 4.0, but added here for backward compatibility
            Class.forName("oracle.jdbc.OracleDriver");
 
            // METHOD #1
            String dbURL1 = "jdbc:oracle:thin:tiger/scott@localhost:1521:productDB";
            conn1 = DriverManager.getConnection(dbURL1);
            if (conn1 != null) {
                System.out.println("Connected with connection #1");
            }
 
            // METHOD #2
            String dbURL2 = "jdbc:oracle:thin:@localhost:1521:productDB";
            String username = "tiger";
            String password = "scott";
            conn2 = DriverManager.getConnection(dbURL2, username, password);
            if (conn2 != null) {
                System.out.println("Connected with connection #2");
            }
 
            // METHOD #3
            String dbURL3 = "jdbc:oracle:oci:@ProductDB";
            Properties properties = new Properties();
            properties.put("user", "tiger");
            properties.put("password", "scott");
            properties.put("defaultRowPrefetch", "20");
            conn3 = DriverManager.getConnection(dbURL3, properties);
 
            if (conn3 != null) {
                System.out.println("Connected with connection #3");
            }
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        } catch (SQLException ex) {
            ex.printStackTrace();
        } finally {
            try {
                if (conn1 != null && !conn1.isClosed()) {
                    conn1.close();
                }
                if (conn2 != null && !conn2.isClosed()) {
                    conn2.close();
                }
                if (conn3 != null && !conn3.isClosed()) {
                    conn3.close();
                }
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }
    }
}

و فى النهاية تحياتى لكم بالتوفيق

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

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

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

http://egy-tech.forumegypt.net

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

رد: تعلم كيفية الاتصال بقواعد بيانات Oracle من خلال تطبيقات الجافا

مُساهمة من طرف StarPixel في الأربعاء فبراير 19, 2014 6:33 pm

سأقوم بتطبيقها قريباً ^^ 
جزاك الله خير

StarPixel
..
..

تاريخ التسجيل : 22/01/2014
المساهمات : 15
النقاط : 15
التقيم : 0
الدولة : اليمن
الجنس : ذكر

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

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


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