بمجرد الحصول على اتصال ، يمكننا التفاعل مع قاعدة البيانات. تتيح الطرق والخصائص المحددة في عبارة JDBC ، وواجهات ClobablesTatement و ResparedStatement إرسال أوامر SQL أو PL/SQL واستلام البيانات من قاعدة البيانات.
وهي تحدد أيضًا الطرق التي تساعد على تحويل اختلافات البيانات بين Java وقواعد البيانات باستخدام أنواع بيانات SQL.
يوفر الجدول التالي نظرة عامة على كيفية استخدام كل واجهة لفهم الواجهة التي يجب استخدامها
كائن البيان:
إنشاء كائن بيان
عندما تتمكن من استخدام كائن العبارة لتنفيذ عبارات SQL ، تحتاج إلى استخدام طريقة CreateStatement () لكائن الاتصال لإنشاء واحد ، كما هو موضح في المثال التالي:
بيان stmt = null ؛ حاول {stmt = conn.createstatement () ؛ . . .} catch (sqlexception e) {. . .} أخيراً { . . .}بمجرد إنشاء كائن بيان ، يمكن بعد ذلك استخدامه لتنفيذ عبارات SQL مع إحدى طرق التنفيذ الثلاث.
تنفيذ منطقي (سلسلة SQL): إرجاع القيمة المنطقية الصحيح إذا كان يمكن استرداد كائن ResultSet ، وإلا فإن إرجاع خطأ. استخدم هذه الطريقة لتنفيذ عبارات SQL DDL ، أو عند استخدام SQL ديناميكي حقيقي.
int executeupdate (String SQL): إرجاع عدد الصفوف التي يتم تنفيذها بواسطة عبارة SQL المتأثرة. استخدم هذه الطريقة لتنفيذ ، وآمل في الحصول على بعض الصفوف المتأثرة من عبارات SQL - على سبيل المثال ، إدراج أو تحديث أو حذف البيانات.
ResultSet ExecuteQuery (String SQL): إرجاع كائن ResultSet. استخدم هذه الطريقة عندما تريد الحصول على مجموعة نتائج ، تمامًا مثل استخدام عبارة SELECT.
أغلق كائن البيان:
مثلما يغلق كائن اتصال للاحتفاظ بمورد قاعدة البيانات ، يجب إغلاق كائن العبارة لنفس السبب.
ستؤدي مكالمة بسيطة إلى طريقة Close () للمهمة. إذا تم إغلاق كائن الاتصال أولاً ، فسيتم إغلاق كائن العبارة أيضًا. ومع ذلك ، يجب دائمًا إغلاق كائن البيان بشكل صريح لضمان التخليص السليم.
بيان stmt = null ؛ حاول {stmt = conn.createstatement () ؛ . . .} catch (sqlexception e) {. . .} أخيرًا {stmt.close () ؛}
أعدت كائن
تمتد واجهة إعداد الجهة المعدلة إلى واجهة البيان ، مما يسمح بإضافة العديد من الميزات المتقدمة إلى كائن بيان مشترك.
يوفر البيان مرونة للمعلمات الديناميكية.
قم بإنشاء كائن reparedstatement:
reparedStatement pStMt = null ؛ حاول {String sql = "تحديث الموظفين تعيين العمر =؟ أين id =؟" ؛ PSTMT = conn.preparestatement (SQL) ؛ . . .} catch (sqlexception e) {. . .} أخيراً { . . .}يتم تمثيل جميع المعلمات في JDBC؟ الرمز ، وهو علامة معلمة معروفة. قبل تنفيذ عبارة SQL ، يجب توفير كل معلمة من القيمة.
تربط طريقة setxxx () القيمة بالمعلمة ، حيث يمثل xxx نوع بيانات JAVA الذي تريد ربطه بقيمة معلمة الإدخال. إذا نسيت تقديم القيمة ، فستتلقى sqlexception.
تتم الرجوع إلى كل علامة معلمة بواسطة موضع رقم التسلسل. تشير العلامة الأولى إلى الموضع 1 ، الموضع التالي هو 2 ، وهلم جرا. تختلف هذه الطريقة عن فهرسة صفيف Java ، بدءًا من 0.
جميع كائنات البيانات طرق للتفاعل مع قاعدة البيانات (أ) تنفيذ () ، (ب) تنفيذ executequery () ، و (ج) تنفيذ executeupdate () تعمل أيضًا مع كائنات reparedstatement. ومع ذلك ، يتم تعديل الطريقة لاستخدام عبارات SQL ، والتي يمكن أن تستخدم معلمات الإدخال.
أغلق كائن المعدة:
مثلما يغلق كائن بيان ، لنفس السبب ، يجب أيضًا إغلاق كائن المعدة.
ستؤدي مكالمة بسيطة إلى طريقة Close () للمهمة. إذا تم إغلاق كائن الاتصال ، فسوف يغلق أولاً كائن المعدة. ومع ذلك ، يجب دائمًا إغلاق كائن المعدة بشكل صريح لضمان التخليص الصحيح.
reparedStatement pStMt = null ؛ حاول {String sql = "تحديث الموظفين تعيين العمر =؟ أين id =؟" ؛ PSTMT = conn.preparestatement (SQL) ؛ . . .} catch (sqlexception e) {. . .} أخيرًا {pstmt.close () ؛} ReparedStatement مثيل
فيما يلي أمثلة على استخدام الإحصاءات المعدة وتحويل الإيقاف:
انسخ المثال التالي jdbcexample.java ، ترجمة وتشغيله كما هو موضح أدناه:
// الخطوة 1. استيراد PackagesImport java.sql.*؛ الفئة العامة jdbcexample {// jdbc اسم برنامج التشغيل و url قاعدة البيانات static static 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 ؛ ReparedStatement STMT = NULL ؛ حاول {// الخطوة 2: تسجيل jdbc class.forname ("com.mysql.jdbc.driver") ؛ // الخطوة 3: فتح نظام اتصال. out.println ("الاتصال بقاعدة البيانات ...") ؛ conn = drivermanager.getConnection (db_url ، user ، pass) ؛ // الخطوة 4: تنفيذ نظام Query.out.println ("إنشاء بيان ...") ؛ String SQL = "تحديث الموظفين تعيين العمر =؟ أين المعرف =؟" ؛ stmt = conn.preparestatement (SQL) ؛ // ربط القيم في المعلمات. stmt.setint (1 ، 35) ؛ // هذا من شأنه أن يضع stmt.setint العمر (2 ، 102) ؛ // هذا من شأنه تعيين المعرف // دعنا نحديث عمر السجل مع معرف = 102 ؛ int صفوف = stmt.executeupdate () ؛ System.out.println ("الصفوف المتأثرة:" + صفوف) ؛ // دعنا نختار جميع السجلات وعرضها. 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 jdbcexampleالآن دعنا نرسل المثال أعلاه على النحو التالي:
C:> Javac jdbcexample.java
عند تشغيل jdbcexample ، فإنه ينتج النتائج التالية:
C:> Java jdbcexample
التواصل مع قاعدة البيانات ... إنشاء بيان ... صفوف متأثرة: 1ID: 100 ، العمر: 18 ، أولاً: زارا ، آخر: عليد: 101 ، العمر: 25 ، أولا: ماهناز ، الأخير: فاطمة: 102 ، العمر: 35 ، أولا: Zaid ، آخر: خانيد: 103 ، العمر: 30 ، أولا: آخر: Mittalgoodebye!