English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
تعود جملة SQL لقراءة البيانات من الاستعلام إلى البيانات في مجموعة النتائج. هي طريقة استاندارد لاختيار السطور من قاعدة البيانات وتحليلها في مجموعة النتائج. يُمثل واجهة Sql.ResultSet نتائج استعلام قاعدة البيانات.
يحافظ ResultSet على مآل السطر الحالي في مجموعة النتائج. ويُشار إلى مصطلح “مجموعة النتائج” بأنه بيانات السطور والأعمدة الموجودة في ResultSet.
يمكن تقسيم طرق ResultSet إلى ثلاثة أنواع-
طرق التصفح: للمتحرك إلى اليسار واليمين.
طريقة Get: للنظر في بيانات الأعمدة في السطر الحالي الذي يشير إليه الحاسمة.
طريقة Update:لتحديث بيانات كل عمود في السطر الحالي. يمكن أيضًا تحديث التحديث في قاعدة البيانات الأساسية.
يمكن للحاسمة التدول بناءً على خصائص ResultSet. هذه الخصائص يتم تحديدها عند إنشاء Statement الذي يولد ResultSet المطلوب.
يقدم JDBC طريقة الاتصال التالية لإنشاء جملة تحتوي على ResultSet المطلوب-
createStatement(int RSType, int RSConcurrency);
prepareStatement(String SQL, int RSType, int RSConcurrency);
prepareCall(String sql, int RSType, int RSConcurrency);
الرقم الأول يمثل نوع ResultSet، والرقم الثاني هو إحدى الثوابت ResultSet، ويُستخدم لتعيين ما إذا كانت مجموعة النتائج قابلة للقراءة فقط أو قابلة للتحديث.
الأنواع المحتملة من RSType كما هو موضح أدناه. إذا لم تُحدد أي نوع ResultSet، فسيتم منحك تلقائيًا نوع TYPE_FORWARD_ONLY.
النوع | وصف |
---|---|
ResultSet.TYPE_FORWARD_ONLY | يمكن للحاسمة التدول للأمام فقط في مجموعة النتائج. |
ResultSet.TYPE_SCROLL_INSENSITIVE | يستطيع الماوس التدول للأمام والخلف، ويفترض أن تكون النتائج غير حساسة بشكل كبير للتعديلات التي يقوم بها الآخرون على قاعدة البيانات بعد إنشاء مجموعة النتائج. |
ResultSet.TYPE_SCROLL_SENSITIVE. | يستطيع الماوس التدول للأمام والخلف، ويفترض أن تكون النتائج الحساسة بشكل كبير للغاية للتعديلات التي يقوم بها الآخرون على قاعدة البيانات بعد إنشاء مجموعة النتائج. |
الأنواع المحتملة لـ RSConcurrency فيما يلي. إذا لم تُحدد أي نوع تعاون، فإن النوع الافتراضي سيكون CONCUR_READ_ONLY.
التعاون | وصف |
---|---|
ResultSet.CONCUR_READ_ONLY | إنشاء مجموعة نتائج قارئة. هذا هو القيمة الافتراضية |
ResultSet.CONCUR_UPDATABLE | إنشاء مجموعة نتائج قابلة للتحديث. |
حتى الآن، جميع الأمثلة التي كتبناها يمكن كتابتها كما يلي، حيث يتم إنشاء Statement لإنشاء ResultSet القارئ فقط-
try { Statement stmt = conn.createStatement( ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); } catch(Exception ex) { .... } finally { .... }
يوجد عدة طرق في واجهة ResultSet تتعلق بتحريك المؤشر، بما في ذلك-
رقم | الطريقة والشرح |
---|---|
1 | public void beforeFirst() throws SQLException تحريك مؤشر النص إلى قبل السطر الأول. |
2 | public void afterLast() throws SQLException تحريك مؤشر النص إلى بعد السطر الأخير. |
3 | public boolean first() throws SQLException تحريك مؤشر النص إلى السطر الأول. |
4 | public void last() throws SQLException تحريك مؤشر النص إلى السطر الأخير. |
5 | public boolean absolute(int row) throws SQLException تحريك مؤشر النص إلى السطر المحدد. |
6 | public boolean relative(int row) throws SQLException تحريك مؤشر النص للأمام أو الخلف بمقدار السطور المحددة، من الموضع الحالي الذي يشير إليه. |
7 | public boolean previous() throws SQLException تحريك مؤشر النص إلى السطر السابق. إذا لم يكن السطر السابق في مجموعة النتائج، فإن هذه الطريقة تعود false. |
8 | public boolean next() throws SQLException تحريك مؤشر النص إلى السطر التالي. إذا لم يكن هناك سطور أخرى في مجموعة النتائج، فإن هذه الطريقة تعود false. |
9 | public int getRow() throws SQLException يعيد رقم الصف الذي يشير إليه المؤشر. |
10 | public void moveToInsertRow() throws SQLException انقل المؤشر إلى الصف الخاص في مجموعة النتائج، والذي يمكن استخدامه لإدراج صف جديد في قاعدة البيانات. تذكر موقع المؤشر الحالي. |
11 | public void moveToCurrentRow() throws SQLException إذا كان المؤشر الحالي في صف الإدراج، فأرجع المؤشر إلى الصف الحالي؛ وإلا لا يقوم هذا الطريقة بأي عمل. |
للتفهم بشكل أفضل، دعونا ندرس “تحريك - مثال على الكود.
يحتوي واجهة ResultSet على العديد من الطرق للحصول على بيانات الصف الحالي.
لدي كل نوع بيانات طريقة get، وكل طريقة get لها نسختين -
عمود يحتوي على اسم العمود.
مؤشر يحتوي على معرف عمود.
على سبيل المثال، إذا كان العمود الذي تهمه يحتوي على عدد صحيح، فإنك بحاجة إلى استخدام طريقة getInt() من ResultSet.
رقم | الطريقة والشرح |
---|---|
1 | public int getInt(String columnName) throws SQLException يعيد قيمة int في الصف الحالي للعمود المسمى columnName. |
2 | public int getInt(int columnIndex) throws SQLException يعيد قيمة عدد صحيح في الصف الحالي من العمود المحدد بالمعرف. يبدأ معرف العمود من 1، مما يعني أن العمود الأول في الصف هو 1، والعمود الثاني هو 2، وهكذا. |
بالنسبة لكل نوع من أنواع البيانات الأساسية الثمانية في واجهة ResultSet، بالإضافة إلى الأنواع الشائعة (مثل java.lang.String، java.lang.Object و java.net.URL)، هناك طرق get.
هناك أيضًا طرق للحصول على أنواع البيانات SQL مثل java.sql.Date، java.sql.Time، java.sql.Timestamp، java.sql.Clob و java.sql.Blob. راجع المستندات للحصول على معلومات إضافية حول استخدام هذه أنواع البيانات SQL.
للتفهم بشكل أفضل، دعونا ندرسمراجعة - مثال على الكود.
يحتوي واجهة ResultSet على مجموعة من الطرق لتحديث بيانات مجموعة النتائج.
مثل طريقة get، لدى كل نوع بيانات طريقتين لتحديثها -
عمود يحتوي على اسم العمود.
مؤشر يحتوي على معرف عمود.
على سبيل المثال، لتعديل عمود String في الصف الحالي من مجموعة النتائج، يمكنك استخدام أحد طرق updateString() التالية -
رقم | الطريقة والشرح |
---|---|
1 | public void updateString(int columnIndex, String s) throws SQLException غير قيمة الأعمدة المحددة إلى قيمة s. |
2 | public void updateString(String columnName, String s) throws SQLException مثل الطرق السابقة، ولكن الأعمدة يتم تحديد اسمها وليس المؤشر. |
يوجد ثمانية أنواع بيانات قياسية وأجهزة تعريف مثل String،Object،URL وأنواع البيانات SQL في حزمة java.sql مع طرق التحديث.
تحديث سطر في نتائج الجلسة سيغير الأعمدة فيResultSet لسطر الحالي، ولكن لن يغير السطر في قاعدة البيانات الأساسية. لتحديث التغييرات في السطر في قاعدة البيانات، يجب عليك طلب واحدة من الطرق التالية.
رقم | الطريقة والشرح |
---|---|
1 | public void updateRow() تحديث السطر الحالي من خلال تحديث السطر المحدد في قاعدة البيانات. |
2 | public void deleteRow() حذف السطر الحالي من قاعدة البيانات. |
3 | public void refreshRow() تحديث البيانات في نتائج الجلسة ليعكس أي تغييرات حديثة في قاعدة البيانات. |
4 | public void cancelRowUpdates() إلغاء أي تحديثات قيد التنفيذ على السطر الحالي. |
5 | public void insertRow() إدراج سطر في قاعدة البيانات. يمكن طلب هذه الطريقة فقط عندما يكون السطر المحدد في حالة الإدراج. |
للتفهم بشكل أفضل، دعونا ندرس “تحديث الكود المثال.