قاعدة بيانات اتصال JDBC
البرمجة التي تنطوي على إنشاء اتصال JDBC بسيط للغاية. فيما يلي أربع خطوات بسيطة:
استيراد حزمة JDBC:
يخبر بيان الاستيراد برنامج التحويل البرمجي Java أين يمكن العثور على المراجع في الكود ووضع الفصل في بداية رمز المصدر الخاص بك.
باستخدام حزمة JDBC القياسية ، فإنه يسمح بالتحديد والإدراج وتحديث وحذف البيانات من جداول SQL ، وإضافة الواردات التالية إلى رمز المصدر الخاص بك:
استيراد java.sql.* ؛ // للحصول على برامج JDBC القياسية java.math.* ؛ // لدعم BigDecimal و BigInteger
قم بتسجيل برنامج تشغيل JDBC:
قبل استخدامه ، يجب عليك تسجيل برنامج التشغيل الخاص بك في البرنامج. برنامج التشغيل المسجل هو عملية تنفيذ يتم فيها تحميل ملف فئة برنامج تشغيل Oracle في الذاكرة بحيث يمكن استخدامه كواجهة JDBC.
تحتاج إلى القيام بهذا التسجيل مرة واحدة فقط في البرنامج. يمكن تسجيل السائق بواحدة من طريقتين.
الطريقة (ط) - class.forname ():
الطريقة الأكثر شيوعًا في تسجيل برنامج التشغيل هي استخدام طريقة Java's Class.Forname () لتحميل ملفات فئة برنامج التشغيل ديناميكيًا في الذاكرة ، وسيقوم بتسجيلها تلقائيًا. هذا النهج أمر مرغوب فيه لأنه يسمح للسائق بتسجيل التكوين لسهولة الحمل.
يستخدم المثال التالي class.forname () لتسجيل برنامج تشغيل Oracle:
حاول {class.forname ("oracle.jdbc.driver.oracledriver") ؛} catch (classnotfoundException ex) {system.out.println ("error: غير قادر على تحميل فئة برنامج التشغيل!") ؛ System.exit (1) ؛}يمكنك استخدام طريقة getInstance () لحل JVMs غير المتوافقة ، ولكن يتم كتابة استثناءين إضافيين على النحو التالي:
جرب {class.forname ("oracle.jdbc.driver.oracledriver"). newinstance () ؛} catch (classnotfoundException ex) {system.out.println ("error: unable لتحميل فئة السائق!") ؛ System.exit (1) ؛ catch (alfictAccessException ex) {system.out.println ("خطأ: مشكلة الوصول أثناء التحميل!") ؛ System.exit (2) ؛ catch (instantiationException ex) {system.out.println ("error: غير قادر على instantiate driver!") ؛ System.exit (3) ؛} الطريقة (2) - drivermanager.registerDriver ():
الطريقة الثانية لاستخدامه لتسجيل برنامج التشغيل هي استخدام طريقة StaticDriverManager.registerDriver ().
ينبغي ، إذا كنت تستخدم JDK JVM غير متوافق ، على سبيل المثال ، توفر Microsoft طريقة باستخدام RecordDriver ().
يستخدم المثال التالي registerDriver () لتسجيل برنامج تشغيل Oracle:
حاول {driver mydriver = new oracle.jdbc.driver.oracledriver () ؛ drivermanager.registerDriver (mydriver) ؛} catch (classnotfoundException ex) {system.out.println ("خطأ: غير قادر على تحميل فئة برنامج التشغيل!") ؛ System.exit (1) ؛} صياغة URL لقاعدة البيانات:
عند تحميل برنامج التشغيل ، يمكنك إنشاء اتصال في البرنامج باستخدام طريقة drivermanager.getConnection (). لسهولة الرجوع إليها ، دعنا ندرج ثلاثة طرق drivermanager.getConnection ():
هنا ، يتطلب كل نموذج عنوان URL لقاعدة البيانات. يشير عنوان URL لقاعدة البيانات إلى عنوان قاعدة البيانات.
يتم استخدام عنوان URL لقاعدة البيانات بشكل شائع لإنشاء اتصالات.
يسرد الجدول التالي أسماء برنامج تشغيل JDBC الشهيرة وعنوان URL لقاعدة البيانات.
RDBMSJDBC اسم برنامج عنوان URL
mysql com.mysql.jdbc.driver jdbc: mysql: // hostname/databasenameoracle oracle.jdbc.driver.oracledriver الرقم/databasenamesybase com.sybase.jdbc.sybdriver jdbc: sybase: tds: اسم المضيف: رقم المنفذ/databasename
جميع الأجزاء المميزة بتنسيق عنوان URL ثابتة ، ولا يلزم تغيير الأجزاء المتبقية إلا وفقًا لإعدادات قاعدة البيانات.
إنشاء كائن اتصال: استخدم اسم المستخدم وكلمة المرور لعنوان URL لقاعدة البيانات:
يتم استخدام الأشكال الثلاثة التالية من طريقة drivermanager.getConnection () لإنشاء كائن اتصال. يتطلب الشكل الأكثر شيوعًا لـ getConnection () تمرير عنوان URL لقاعدة البيانات واسم المستخدم وكلمة المرور:
قيمة databasename لقاعدة بيانات URL: على افتراض أنك تستخدم برنامج تشغيل Oracle Thin ، تحتاج إلى تحديد مضيف: منفذ.
افترض أن هناك عنوان مضيف TCP/IP 192.0.0.1 ويتم تكوين اسم المضيف ومستمع Oracle على المنفذ 1521 ، اسم قاعدة البيانات هو EMP ، ثم عنوان URL الكامل لقاعدة البيانات هو:
JDBC: Oracle: Thin: amrood: 1521: Emp
الآن ، يجب استدعاء اسم المستخدم وكلمة المرور المناسبة وطريقة getConnection () للحصول على كائن اتصال كما هو موضح أدناه:
url url = "jdbc: oracle: thin: amrood: 1521: emp" ؛ string user = "username" ؛ string pass = "password" connect conn = drivermanager.getConnection (url ، user ، pass) ؛
استخدم عنوان URL لقاعدة بيانات واحدة فقط:
الشكل الثاني من طريقة drivermanager.getConnection () لا يتطلب سوى عنوان URL لقاعدة البيانات:
drivermanager.getConnection (url url string) ؛
ومع ذلك ، في هذه الحالة ، فإن عنوان URL لقاعدة البيانات ، بما في ذلك اسم المستخدم وكلمة المرور ، له النموذج العام التالي:
JDBC: Oracle: برنامج التشغيل: اسم المستخدم/Password@Database
لذلك يمكن إنشاء الاتصال أعلاه على النحو التالي:
url url = "jdbc: Oracle: Thin: اسم المستخدم/كلمة المرور@amrood: 1521: EMP" ؛ connection conn = drivermanager.getConnection (url) ؛
استخدم عنوان URL لقاعدة البيانات وكائن الخصائص:
يتطلب الشكل الثالث من طريقة drivermanager.getConnection () عنوان URL لقاعدة البيانات وكائن خصائص:
drivermanager.getConnection (url url سلسلة ، معلومات الخصائص) ؛
كائن الخصائص ، يحفظ مجموعة من أزواج القيمة الرئيسية. يتم استخدامه لاستدعاء طريقة getConnection () عندما يتم تمرير سمة برنامج التشغيل إلى برنامج التشغيل.
لإجراء نفس الاتصال من خلال المثال السابق ، استخدم الكود التالي:
استيراد java.util.*؛ url url = "jdbc: oracle: thin: amrood: 1521: emp" ؛ properties info = new properties () ؛ info.put ("user" ، "username") ؛ info.put ("password" ، أغلق اتصال JDBC:
في نهاية برنامج JDBC ، يتطلب الأمر صراحة إغلاق جميع الاتصالات إلى قاعدة البيانات لإنهاء كل جلسة قاعدة بيانات. ومع ذلك ، إذا نسيت ، فإن جامع القمامة Java يغلق الاتصال ويمسح الكائنات التي لا معنى لها.
يعد الاعتماد على جمع القمامة ، وخاصة في برمجة قواعد البيانات ، عادةً برمجة سيئة للغاية. يجب أن يكون دائمًا معتادًا على إغلاق طريقة الإغلاق () المرتبطة بكائن الاتصال.
للتأكد من إغلاق الاتصال ، يمكن تنفيذه في كتل أخيرًا في الكود. أخيرًا ، سيتم تنفيذ الكتل ، سواء حدث أم لا.
لإغلاق الاتصال الذي تم فتحه أعلاه ، يجب أن تسمى طريقة Close () على النحو التالي:
conn.close () ؛
أغلق بشكل صريح الاتصالات إلى DBMS لتوفير الموارد.
إنشاء تطبيق JDBC:
هناك ست خطوات متورطة في بناء تطبيق JDBC:
نموذج الرمز:
يمكن استخدام هذا المثال كقالب عندما تحتاج إلى إنشاء تطبيق JDBC.
يتم كتابة هذا الرمز النموذجية بناءً على تثبيت البيئة وقاعدة البيانات في الفصل السابق.
انسخ المثال التالي firstexample.java ، ترجمة وتشغيله على النحو التالي:
// الخطوة 1. استيراد PackagesImport java.sql.*؛ الفئة العامة First Example {// jdbc اسم برنامج التشغيل و url قاعدة البيانات Static Final Final jdbc_driver = "com.mysql.jdbc.driver" ؛ Static Final String db_url = "jdbc: mysql: // localhost/emp" ؛ // بيانات اعتماد قاعدة البيانات user static final user = "username" ؛ Static Final String Pass = "Password" ؛ public static void main (string [] args) {connection conn = null ؛ بيان stmt = فارغة ؛ حاول {// الخطوة 2: تسجيل jdbc class.forname ("com.mysql.jdbc.driver") ؛ // الخطوة 3: فتح نظام اتصال. out.println ("الاتصال بقاعدة البيانات ...") ؛ conn = drivermanager.getConnection (db_url ، user ، pass) ؛ // الخطوة 4: تنفيذ نظام Query.out.println ("إنشاء بيان ...") ؛ stmt = conn.createstatement () ؛ سلسلة SQL ؛ SQL = "SELECT ID ، أولاً ، آخر ، العمر من الموظفين" ؛ resultset rs = stmt.executequery (SQL) ؛ // الخطوة 5: استخراج البيانات من مجموعة النتائج بينما (rs.next ()) {// استرداد حسب اسم العمود int id = rs.getInt ("id") ؛ int age = rs.getInt ("Age") ؛ سلسلة أولاً = rs.getString ("الأول") ؛ سلسلة last = rs.getString ("last") ؛ // عرض قيم System.out.print ("id:" + id) ؛ System.out.print ("، العمر:" + العمر) ؛ System.out.print ("، أولاً:" + أولاً) ؛ system.out.println ("، last:" + last) ؛ } // الخطوة 6: بيئة التنظيف rs.close () ؛ stmt.close () ؛ conn.close () ؛ } catch (sqlexception se) {// تعامل مع الأخطاء لـ jdbc se.printstacktrace () ؛ } catch (استثناء e) {// التعامل مع أخطاء class.forname e.printstacktrace () ؛ } أخيرًا {// أخيرًا كتلة المستخدمة لإغلاق الموارد ، جرب {if (stmt! = null) stmt.close () ؛ } catch (sqlexception se2) {} // لا شيء يمكننا القيام به {if (conn! = null) conn.close () ؛ } catch (sqlexception se) {se.printstacktrace () ؛ } // end أخيرًا حاول} // end try system.out.println ("وداعا!") ؛ } // end main} // end firstexampleالآن دعنا نرسل المثال أعلاه على النحو التالي:
C:> javac firstexample.java
عند تشغيل FirstExample ، فإنه ينتج النتائج التالية:
C:> Java Firstexample
التواصل مع قاعدة البيانات ... إنشاء بيان ... معرف: 100 ، العمر: 18 ، أولاً: زارا ، آخر: Aliid: 101 ، العمر: 25 ، أولاً: Mahnaz ، Last: Fatmaid: 102 ، العمر: 30 ، أولاً: Zaid ، Last: Khanid: 103 ، العمر: 28 ، Sumit ، أخيرًا: Mittal