jdbc resultset how use java resultset retrieve data
यह ट्यूटोरियल बताता है कि डेटा को पुनः प्राप्त करने के लिए JDBC ResultSet का उपयोग कैसे करें। हम उदाहरण के साथ ResultSetMetaData और DatabaseMetaData इंटरफेस के बारे में भी जानेंगे:
में JDBC DriverManager का ट्यूटोरियल JDBC ट्यूटोरियल श्रृंखला , हमने सीखा कि कैसे JDBC DriverManager और इसके तरीकों का उपयोग करें, Java अनुप्रयोगों में JDBC ReadyedStatement।
इस ट्यूटोरियल में, हम JDBC में शेष इंटरफेस पर चर्चा करेंगे। हमने अपने पिछले ट्यूटोरियल्स में स्टेटमेंट, प्रिपेयडस्टैटेमेंट, और कैलेबल स्टैटेमेंट इंटरफेस को कवर किया है।
यहां, हम JDBC ResultSet, ResultSetMetaData, और DatabaseMetaData इंटरफेस, उनके तरीकों और जावा प्रोग्राम में विधियों का उपयोग करने के तरीके के बारे में जानेंगे।
आप क्या सीखेंगे:
JDBC परिणाम इंटरफ़ेस
ResultSet इंटरफ़ेस java.sql पैकेज में मौजूद है। इसका उपयोग जावा प्रोग्राम में SQL स्टेटमेंट्स के निष्पादन के बाद डेटाबेस टेबल से लौटाए गए डेटा को स्टोर करने के लिए किया जाता है। ResultSet का ऑब्जेक्ट परिणाम डेटा पर कर्सर बिंदु बनाए रखता है। डिफ़ॉल्ट रूप से, कर्सर परिणाम डेटा की पहली पंक्ति से पहले होता है।
कर्सर को आगे की दिशा में अगली स्थिति में ले जाने के लिए अगली () विधि का उपयोग किया जाता है। अधिक रिकॉर्ड नहीं होने पर यह FALSE लौटाएगा। यह किसी भी स्टेटमेंट ऑब्जेक्ट का उपयोग करके executeQuery () विधि को कॉल करके डेटा को पुनः प्राप्त करता है। यह स्टेटमेंट या रेडीस्टेयमेंट या कॉल करने योग्य स्टेटमेंट ऑब्जेक्ट हो सकता है। रेडीएस्टस्टेटमेंट, और कॉल करने योग्य स्टेटमेंट इंटरफेस स्टेटमेंट इंटरफेस के उप-इंटरफेस हैं।
स्टेटमेंट इंटरफ़ेस
Statement statemnt1 = conn.createStatement(); ResultSet rs1 = statemnt1.executeQuery(“Select * from EMPLOYEE_DETAILS”);
तैयार किए गए इंटरफ़ेस
PreparedStatement pstatemnt1 = conn.prepareStatement(insert_query); ResultSet rs1 = pstatemnt1.executeQuery(“Select * from EMPLOYEE_DETAILS”);
हम परिणाम के माध्यम से पुनरावृत्ति करते हुए स्तंभों का डेटा प्राप्त करने के लिए getX () विधि का उपयोग कर सकते हैं जहां X - स्तंभ का डेटाटाइप है। गेटएक्स () विधियों का उपयोग करके मान प्राप्त करने के लिए हम या तो कॉलम नाम या सूचकांक का उपयोग कर सकते हैं।
while(rs1.next()) { int empNum = rs1.getInt('empNum'); String lastName = rs1.getString('lastName'); String firstName = rs1.getString('firstName'); String email = rs1.getString('email'); String deptNum = rs1.getString('deptNum'); String salary = rs1.getString('salary'); System.out.println(empNum + ',' +lastName+ ',' +firstName+ ',' +email +','+deptNum +',' +salary); }
हम getX () विधियों में कॉलम नाम के बजाय कॉलम की सूचकांक संख्या का भी उल्लेख कर सकते हैं।
while(rs1.next()) { int empNum = rs1.getInt(1); String lastName = rs1.getString(2); String firstName = rs1.getString(3); String email = rs1.getString(4); String deptNum = rs1.getString(5); String salary = rs1.getString(6); System.out.println(empNum + ',' +lastName+ ',' +firstName+ ',' +email +','+deptNum +',' +salary); }
परिणाम प्रकार
डिफ़ॉल्ट रूप से, हम ResultSet में डेटा / मूल्यों को पुनरावृत्त कर सकते हैं जो आगे की दिशा में निष्पादित SQL कथन के आउटपुट के रूप में वापस आ गए हैं। हम स्क्रॉल करने योग्य रिजल्टसेट का उपयोग करके अन्य दिशाओं में मूल्यों को पुनरावृत्त कर सकते हैं। हम स्टेटमेंट, प्रिपेयरडस्टैटेमेंट और CallableStatement ऑब्जेक्ट बनाते समय ResultSet के प्रकार और संक्षिप्तता को निर्दिष्ट कर सकते हैं।
ResultSet में 3 प्रकार होते हैं। वे:
- TYPE_FORWARD_ONLY: यह डिफ़ॉल्ट विकल्प है, जहां कर्सर शुरू से अंत तक यानी आगे की दिशा में चलता है।
- TYPE_SCROLL_INSENSITIVE: इस प्रकार में, यह कर्सर को आगे और पीछे दोनों दिशाओं में ले जाने के लिए बनाएगा। अगर हम डेटा में कोई परिवर्तन करते हैं, तो संग्रहीत डेटा की पुनरावृत्ति करते समय, यदि वह DB में डेटा को बदलता है, तो यह डेटासेट में अपडेट नहीं होगा। क्योंकि डेटासेट SQL क्वेरी डेटा को लौटाता है, उस समय डेटासेट के पास डेटा होता है।
- TYPE_SCROLL_SENSITIVE: यह TYPE_SCROLL_INSENSITIVE के समान है, अंतर यह है कि यदि कोई SQL SQL डेटा वापस करने के बाद डेटा को अपडेट करता है, तो इसे पुनरावृत्ति करते हुए डेटासेट में परिवर्तन को दर्शाएगा।
ResultSet Concurrency
ResultSet में Concurrency के 2 मोड हैं। वे:
- परिणाम: CONCUR_READ_ONLY: यह डिफॉल्ट कंसीडर मोड है। हम केवल रिजल्टसेट में डेटा पढ़ सकते हैं। अद्यतन लागू नहीं है।
- परिणाम: CONCUR_UPDATABLE: हम ResultSet ऑब्जेक्ट में डेटा को अपडेट कर सकते हैं।
कुछ डेटाबेस सभी ResultSet प्रकारों के लिए समरूपता मोड का समर्थन नहीं करते हैं। उस स्थिति में, हमें यह जाँचने की आवश्यकता है कि क्या वे हमारे इच्छित प्रकार और समर्थन मोड का समर्थन करते हैं जो supportResultSetConcurrency () पद्धति का उपयोग करते हैं।
परिणाम ResetSet इंटरफ़ेस में
ResultSet के तरीकों की 4 श्रेणियां हैं। वे:
- नेविगेशनल तरीके
- गेट्टर मेथड्स
- सेटर विधियां
- विविध विधियाँ
पहले, हम नेविगेशनल तरीकों पर चर्चा करेंगे और फिर आगे बढ़ेंगे।
# 1) नेविगेशनल तरीके
इस विधि का उपयोग डेटासेट के चारों ओर कर्सर ले जाने के लिए किया जाता है।
- बूलियन निरपेक्ष (int पंक्ति): इसका उपयोग कर्सर को निर्दिष्ट पंक्ति में ले जाने के लिए किया जाता है जो पैरामीटर में उल्लिखित होता है और यदि ऑपरेशन सफल होता है तो दूसरा वापस लौटता है।
- शून्य के बाद (): यह अंतिम पंक्ति के बाद स्थानांतरित करने के लिए ResultSet कर्सर बनाता है।
- शून्य से पहले (): यह पहली पंक्ति से पहले स्थानांतरित करने के लिए ResultSet कर्सर बनाता है।
- पहले बूलियन (): यह पहली पंक्ति में जाने के लिए ResultSet कर्सर बनाता है। यदि ऑपरेशन सफल होता है तो यह गलत है।
- बूलियन अंतिम (): यह परिणामी कर्सर को अंतिम पंक्ति में ले जाने के लिए बनाता है। यदि ऑपरेशन सफल होता है तो यह गलत है।
- बूलियन अगला (): यह परिणामी कर्सर को अगली पंक्ति में ले जाने के लिए बनाता है। यह अधिक रिटर्न और अधिक रिकॉर्ड नहीं होने पर गलत होने पर वापस लौटता है।
- बूलियन पिछला (): यह पिछली पंक्ति में जाने के लिए ResultSet कर्सर बनाता है। यदि ऑपरेशन सफल होता है तो यह गलत है।
- बूलियन रिश्तेदार (): यह कर्सर को दी गई संख्या की पंक्तियों को आगे या पीछे की दिशा में ले जाता है।
- Int getRow (): यह वर्तमान पंक्ति संख्या को लौटाता है, जिसका परिणाम परिणाम इंगित कर रहा है।
- शून्य चालनकालांतर (): यदि यह वर्तमान में सम्मिलित पंक्ति में है तो यह कर्सर को वर्तमान पंक्ति में वापस ले जाता है।
- शून्य MoveToInsertRow (): यह डेटाबेस में पंक्ति सम्मिलित करने के लिए कर्सर को विशिष्ट पंक्ति में ले जाता है। यह वर्तमान कर्सर स्थान को याद करता है। इसलिए हम प्रविष्टि के बाद कर्सर को चालू पंक्ति में ले जाने के लिए MoveToCurrentRow () विधि का उपयोग कर सकते हैं।
इस ट्यूटोरियल में, सभी प्रोग्राम जावा में लिखे गए हैं। हमने जावा 8 संस्करण और ओरेकल डीबी का उपयोग किया है।
>> आप Oracle सॉफ्टवेयर डाउनलोड कर सकते हैं यहां
>> आप जावा संस्करण 8 से डाउनलोड कर सकते हैं यहां
इसमें चरण-दर-चरण जावा स्थापना प्रक्रिया है।
JDBC परिणाम का उदाहरण कार्यक्रम: (नेविगेशनल विधियों का उपयोग करके)
package com.STH.JDBC; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class ResultSet_Example { public static void main(String() args) throws ClassNotFoundException { // TODO Auto-generated method stub //Select query String select_query = 'select * from employee_details'; Class.forName('oracle.jdbc.driver.OracleDriver'); //Connecting to Oracle DB try(Connection conn = DriverManager.getConnection('jdbc:oracle:thin:system/pass123@localhost:1521:X E')) { //Creating DatabaseMetaData object DatabaseMetaData dbmd = conn.getMetaData(); //Checking whether the driver supports scroll sensitive type and concur updatable boolean isSupportResultSetType = dbmd.supportsResultSetConcurrency(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); if(isSupportResultSetType == true) { // Creating prepared Statement PreparedStatement pstatemnt1 = conn.prepareStatement(select_query,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet. CONCUR_UPDATABLE); ResultSet rs = pstatemnt1.executeQuery(); //Moving the cursor to point first row rs.first(); System.out.println('FIRST ROW
EMP NUM = ' + rs.getInt('empNum') + '
LAST NAME = '+ rs.getString(2)+'
FIRST NAME = ' + rs.getString(3)); //Moving the cursor to point last row rs.last(); System.out.println('LAST ROW
EMP NUM = ' + rs.getInt('empNum') + '
LAST NAME = '+ rs.getString(2)+'
FIRST NAME = ' + rs.getString(3)); //Moving the cursor to point before first row rs.beforeFirst(); System.out.println('Cursor is pointing at before the first row. Use next() to move in forward direction'); //Moving the cursor to point first row using next() rs.next(); System.out.println('FIRST ROW
EMP NUM = ' + rs.getInt('empNum') + '
LAST NAME = '+ rs.getString(2)+'
FIRST NAME = ' + rs.getString(3)); //Moving the cursor to point after last row rs.afterLast(); System.out.println('Cursor is pointing at after the last row. Use previous() to move in backward direction'); //Moving the cursor to point last row using previous() rs.previous(); System.out.println('LAST ROW
EMP NUM = ' + rs.getInt('empNum') + '
LAST NAME = '+ rs.getString(2)+'
FIRST NAME = ' + rs.getString(3)); //Moving the cursor to point third row rs.absolute(3); System.out.println('Cursor is pointing at 3rd row'); System.out.println('THIRD ROW
EMP NUM = ' + rs.getInt('empNum') + '
LAST NAME = '+ rs.getString(2)+'
FIRST NAME = ' + rs.getString(3)); //Moving the cursor to point previous row of third row rs.relative(-1); System.out.println('Cursor is pointing to the 1 row previous to the 3rd row'); System.out.println('Second ROW
EMP NUM = ' + rs.getInt('empNum') + '
LAST NAME = '+ rs.getString(2)+'
FIRST NAME = ' + rs.getString(3)); //Moving the cursor to point 4th row after the 2nd row rs.relative(4); System.out.println('Cursor is pointing to the 4th row after the 2nd row'); System.out.println('SIXTH ROW
EMP NUM = ' + rs.getInt('empNum') + '
LAST NAME = '+ rs.getString(2)+'
FIRST NAME = ' + rs.getString(3)); //Moving the cursor to point current row System.out.println(' Current Row = ' + rs.getRow()); } } catch (SQLException e) { e.printStackTrace(); } } }
OUTPUT:
Employee_details तालिका में डेटा
स्पष्टीकरण:
उपरोक्त कार्यक्रम में हमने पहले (), अंतिम (), पहले (पहले), बाद में (), अगले (), पिछले (), निरपेक्ष (), सापेक्ष () और getRow () के तरीकों को रिजल्ट में लागू किया है। इन विधियों का उपयोग करने के लिए, हम तैयार परिणाम विधि में ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE मान सेट करते हैं।
आगे, हम चर्चा करेंगे कि परिणाम के तरीके क्या हैं:
# 2) गेट्टर मेथड्स
ResultSet ने डेटाबेस से तालिका का डेटा संग्रहीत किया है। ResultSet में तालिका के मान प्राप्त करने के लिए गेट्टर विधियों का उपयोग किया जाता है। उसके लिए, हमें या तो कॉलम इंडेक्स वैल्यू या कॉलम नाम को पास करना होगा।
ResultSet में निम्न तरीके हैं:
- int getInt (int ColumnIndex): इसका उपयोग एक विशिष्ट डेटा प्रकार के रूप में निर्दिष्ट कॉलम इंडेक्स के मूल्य को प्राप्त करने के लिए किया जाता है।
- फ्लोट getFloat (int ColumnIndex): इसका उपयोग फ्लोट डेटा प्रकार के रूप में निर्दिष्ट कॉलम इंडेक्स के मूल्य को प्राप्त करने के लिए किया जाता है।
- java.sql.date getDate (int ColumnIndex): इसका उपयोग दिनांक मान के रूप में निर्दिष्ट कॉलम इंडेक्स के मान को प्राप्त करने के लिए किया जाता है।
- int getInt (स्ट्रिंग कॉलम) इसका उपयोग एक विशिष्ट डेटा प्रकार के रूप में निर्दिष्ट कॉलम के मूल्य को प्राप्त करने के लिए किया जाता है।
- फ्लोट getFloat (स्ट्रिंग कॉलम) इसका उपयोग फ्लोट डेटा प्रकार के रूप में निर्दिष्ट कॉलम के मूल्य को प्राप्त करने के लिए किया जाता है।
- Java.sql.date getDate (स्ट्रिंग स्तंभ नाम): इसका उपयोग दिनांक मान के रूप में निर्दिष्ट कॉलम का मान प्राप्त करने के लिए किया जाता है।
सभी आदिम डेटा प्रकारों (बुलियन, लॉन्ग, डबल) और स्ट्रिंग के लिए परिणामी तरीके भी हैं रिजल्टसेट इंटरफ़ेस में। हम डेटाबेस से भी एक सरणी और द्विआधारी प्रकार के डेटा प्राप्त कर सकते हैं। इसके लिए भी तरीके हैं।
# 3) सेटर / अपडेटर के तरीके
हम ResultSet Updater विधियों का उपयोग करके डेटाबेस में मान को अपडेट कर सकते हैं। यह गेट्टर विधियों के समान है, लेकिन यहां हमें डेटाबेस में अपडेट करने के लिए विशेष कॉलम के लिए मान / डेटा पास करना होगा।
ResultSet में updater तरीके निम्नलिखित हैं:
- शून्य अपडेटइंट (int ColumnIndex, int मान): इसका उपयोग एक निर्दिष्ट मान के साथ निर्दिष्ट कॉलम इंडेक्स के मूल्य को अपडेट करने के लिए किया जाता है।
- शून्य अद्यतनफ़्लोट (int ColumnIndex, float f): इसका उपयोग फ्लोट मूल्य के साथ निर्दिष्ट कॉलम इंडेक्स के मूल्य को अपडेट करने के लिए किया जाता है।
- शून्य अद्यतन करें (int ColumnIndex, दिनांक d): इसका उपयोग दिनांक मान के साथ निर्दिष्ट कॉलम इंडेक्स के मान को अपडेट करने के लिए किया जाता है।
- शून्य अपडेटइंट (स्ट्रिंग स्तंभ, int मान): इसका उपयोग दिए गए इंट वैल्यू के साथ निर्दिष्ट कॉलम के मूल्य को अपडेट करने के लिए किया जाता है।
- शून्य अद्यतनफ्लोट (स्ट्रिंग स्तंभ, नाव च): इसका उपयोग दिए गए फ्लोट मूल्य के साथ निर्दिष्ट कॉलम के मूल्य को अपडेट करने के लिए किया जाता है।
- Java.sql.date getDate (स्ट्रिंग स्तंभ नाम): इसका उपयोग दिए गए दिनांक मान के साथ निर्दिष्ट कॉलम के मूल्य को अपडेट करने के लिए किया जाता है।
सभी आदिम डेटा प्रकारों (बूलियन, लंबी, डबल) और स्ट्रिंग के लिए अपडेटर तरीके भी हैं रिजल्टसेट इंटरफ़ेस में।
अपडेटर विधियां केवल डेटा को ResultSet ऑब्जेक्ट में अपडेट करती हैं। आवेषण या अद्यतन विधि को कॉल करने के बाद मान DB में अपडेट किया जाएगा।
पंक्ति को अद्यतन करना:
हम अपडेटएक्स () विधियों को कॉल करके डेटा को अपडेट कर सकते हैं, कॉलम नाम या इंडेक्स और अपडेट करने के लिए मानों को पास कर सकते हैं। हम एक्सएक्सएक्स के स्थान पर किसी भी डेटा प्रकार को अपडेट एक्सएक्सएक्स विधि में उपयोग कर सकते हैं। अब तक, हमने ResultSet ऑब्जेक्ट में डेटा अपडेट किया है। DB में डेटा को अपडेट करने के लिए, हमें updateRow () विधि को कॉल करना होगा।
पंक्ति सम्मिलित करना:
हमें एक नई पंक्ति सम्मिलित करने के लिए कर्सर को स्थानांतरित करने के लिए MoveToInsertRow () का उपयोग करने की आवश्यकता है। हमने पहले ही इसे नेविगेशन विधियों अनुभाग में शामिल कर लिया है। अगला, हमें पंक्ति में डेटा जोड़ने के लिए अपडेटएक्स () विधि को कॉल करने की आवश्यकता है। हमें सभी स्तंभों के लिए डेटा प्रदान करना चाहिए अन्यथा यह उस विशेष स्तंभ के डिफ़ॉल्ट मान का उपयोग करेगा।
डेटा को अपडेट करने के बाद, हमें आवेषण () विधि को कॉल करना होगा। इसके बाद कर्सर की स्थिति को उस पंक्ति पर वापस ले जाने के लिए MoveToCurrentRow () विधि का उपयोग करें, जब हम एक नई पंक्ति सम्मिलित करना शुरू करने से पहले थे।
परिणाम उदाहरण:
package com.STH.JDBC; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class ResultSet_Example1 { public static void main(String() args) throws ClassNotFoundException { // TODO Auto-generated method stub String select_query = 'select empnum,lastName,firstName from employee_details'; String insert_query = 'insert into employee_details values(?,?,?,?,?,?)'; Class.forName('oracle.jdbc.driver.OracleDriver'); //Connecting to Oracle DB try(Connection conn = DriverManager.getConnection('jdbc:oracle:thin:system/pass123@localhost:1521:XE')) { //Creating DatabaseMetaData object DatabaseMetaData dbmd = conn.getMetaData(); //Checking whether the driver supports scroll insensitive type and concur updatable boolean isSupportResultSetType = dbmd.supportsResultSetConcurrency(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if(isSupportResultSetType == true) { // Creating prepared Statement PreparedStatement pstatemnt1 = conn.prepareStatement(select_query,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); ResultSet rs = pstatemnt1.executeQuery(select_query); //Moving the cursor to point last row of the table rs.last(); System.out.println('LAST ROW: Before inserting new Employee'); System.out.println('LAST ROW: EMPNUM = ' + rs.getInt(1)); System.out.println('
EMP NUM = ' + rs.getInt('empNum') + '
LAST NAME = '+ rs.getString(2)+'
FIRST NAME = ' + rs.getString(3)); // Setting the values to insert in the EMPLOYEE_DETAILS Table //Moving the cursor to point insert a row to table rs.moveToInsertRow(); //Update EMPNUM value rs.updateInt(1, 1017); //Update LAST NAME value rs.updateString(2, 'Bond'); //Update FIRST NAME value rs.updateString(3, 'James'); //Insert a new row rs.insertRow(); //Moving the cursor to point 5th row rs.absolute(5); System.out.println('Befor Updating EMPNUM of the 5th ROW'); System.out.println('
EMP NUM = ' + rs.getInt('empNum') + '
LAST NAME = '+ rs.getString(2)+'
FIRST NAME = ' + rs.getString(3)); System.out.println(' Updating EMP id of the 5th EMPLOYEE'); //Updating EMPNUM of 5th row rs.updateInt(1,3005); rs.updateRow(); System.out.println('
EMP NUM = ' + rs.getInt('empNum') + '
LAST NAME = '+ rs.getString(2)+'
FIRST NAME = ' + rs.getString(3)); //Moving the cursor to point last row rs.last(); System.out.println('LAST ROW: EMPNUM = ' + rs.getInt(1)); System.out.println('
EMP NUM = ' + rs.getInt('empNum') + '
LAST NAME = '+ rs.getString(2)+'
FIRST NAME = ' + rs.getString(3)); } } catch (SQLException e) { e.printStackTrace(); } } }
OUTPUT:
स्पष्टीकरण:
उपरोक्त कार्यक्रम में जो हमने किया है वह पहले है, हमने Employee_details के डेटा को SELECT क्वेरी का उपयोग करके ResultSet ऑब्जेक्ट में संग्रहीत किया है। फिर, हमने ResultSet के अंतिम () विधि का उपयोग करके कर्मचारी_डेट तालिका में अंतिम पंक्ति का डेटा प्रदर्शित किया। MoveToInsertRow () विधि वर्तमान पंक्ति को इंगित करने के लिए कर्सर बनाती है, अब वर्तमान पंक्ति अंतिम पंक्ति है।
updateXXX () मेथड्स को रो और इन्सर्ट में अपडेट करने के लिए इस्तेमाल की जाने वाली विधियाँ () मेथड ने डेटा को एक नई रो में डाला है। निरपेक्ष () पद्धति का उपयोग करके, हमने कर्सर को 5 को इंगित कियावेंपंक्ति। UpdateInt () विधि का उपयोग 5 की नई आईडी के साथ EMPNUM को अपडेट करने के लिए किया गया हैवेंटेबल में कर्मचारी। उसके बाद, यह जांचने के लिए डेटा प्रदर्शित किया गया है कि ईएमपीएनयूएम अपडेट है या नहीं।
पिछले () का उपयोग करके तालिका की अंतिम पंक्ति को इंगित करने के लिए कर्सर बनाया और इसे प्रदर्शित किया। उपरोक्त तर्क करने के लिए, हमें ResStSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE मानों को तैयार करने की विधि में सेट करने की आवश्यकता है।
# 4) विविध तरीके
- शून्य के करीब (): इसका उपयोग ResultSet इंस्टेंस को बंद करने और ResultSet इंस्टेंस से जुड़े संसाधनों को खाली करने के लिए किया जाता है।
- ResultSetMetaData getMetaData (): यह ResultSetMetaData इंस्टेंस लौटाता है। इसमें क्वेरी आउटपुट के कॉलम के प्रकार और संपत्ति के बारे में जानकारी है। हम अगले भाग में ResultSetMetaData के बारे में अधिक जानेंगे।
रिजल्टस्मेटडेटाटा
मेटाडेटा क्या है?
मेटाडेटा का अर्थ है डेटा के बारे में डेटा। इस इंटरफ़ेस का उपयोग करके, हम ResultSet के बारे में अधिक जानकारी प्राप्त करेंगे। यह java.sql पैकेज में उपलब्ध है। प्रत्येक ResultSet ऑब्जेक्ट एक ResultSetMetaData ऑब्जेक्ट से संबद्ध है।
इस ऑब्जेक्ट में कॉलम के डेटाटाइप, कॉलम का नाम, कॉलम की संख्या, टेबल का नाम, स्कीमा नाम आदि जैसे गुणों का विवरण होगा। हम ResultSetMetaData ऑब्जेक्ट getMetaData () के परिणाम का उपयोग करके प्राप्त कर सकते हैं।
रिजल्टसेटमैटडेटा का सिंटैक्स:
PreparedStatement pstatemnt1 = conn.prepareStatement(insert_query); ResultSet rs1 = pstatemnt1.executeQuery(“Select * from EMPLOYEE_DETAILS”); ResultSetMetaData rsmd = rs.getMetaData();
ResultSetMetaData इंटरफ़ेस के महत्वपूर्ण तरीके:
विधि का नाम | विवरण |
---|---|
बूलियन कैसिसेन्सिटिव (इंट कॉलम) | यह सही है अगर दिए गए कॉलम केस सेंसिटिव हैं, और झूठे हैं |
स्ट्रिंग getColumnName (इंट कॉलम) | यह विशेष कॉलम का कॉलम नाम लौटाता है |
स्ट्रिंग getColumnTypeName (इंट कॉलम) | यह उस विशेष कॉलम का डेटाटाइप लौटाता है जिसे हमने एक पैरामीटर के रूप में पारित किया है |
स्ट्रिंग getTableName (int कॉलम) | यह स्तंभ का तालिका नाम लौटाता है |
स्ट्रिंग getSchemaName (इंट कॉलम) | यह कॉलम की तालिका का स्कीमा नाम देता है |
int getColumnCount () | यह परिणाम के कॉलम की संख्या लौटाता है |
बूलियन isAutoIncrement (इंट कॉलम) | यह सही है अगर दिए गए कॉलम में ऑटो इन्क्रीमेंट है, अन्यथा गलत है |
ResultSetMetaData उदाहरण
package com.STH.JDBC; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; public class ResultSetMetaData_Example { public static void main(String() args) throws ClassNotFoundException, SQLException { // TODO Auto-generated method stub String QUERY= ' select * from employee_details'; Class.forName('oracle.jdbc.driver.OracleDriver'); try(Connection conn = DriverManager.getConnection('jdbc:oracle:thin:system/pass123@localhost:1521:XE')) { Statement statemnt1 = conn.createStatement(); ResultSet rs1 =null; rs1 = statemnt1.executeQuery(QUERY); ResultSetMetaData rsmd = rs1.getMetaData(); System.out.println(' We are using ResultSetMetaData '); System.out.println('No: of Columns: '+ rsmd.getColumnCount()); System.out.println('ColumnName of Column 1: '+ rsmd.getColumnName(1)); System.out.println('Data Type of Column 2: ' + rsmd.getColumnTypeName(2)); System.out.println('Table Name of the Column 1: ' + rsmd.getTableName(1)); System.out.println('Schema Name of the Column 1: ' + rsmd.getSchemaName(1)); } } }
OUTPUT:
स्पष्टीकरण:
उदाहरण के साथ ब्लैक बॉक्स परीक्षण क्या है
उपरोक्त कार्यक्रम में, हमने getColumnCount (), getColumnName (), getColumnTypeName (), getTableName () और getSchemaName () विधियों को ResultSetMetaData इंटरफ़ेस में लागू किया है।
डेटाबेसमाटाडाटा
DatabaseMetaData इंटरफ़ेस डेटाबेस के बारे में डेटाबेस नाम, डेटाबेस संस्करण और इसी तरह की जानकारी देता है।
DatabaseMetaData इंटरफ़ेस के महत्वपूर्ण तरीके:
विधि का नाम | विवरण |
---|---|
स्ट्रिंग getStringFunctions () | यह कनेक्टेड डेटाबेस में उपलब्ध स्ट्रिंग फ़ंक्शंस की सूची देता है |
स्ट्रिंग getDriverName () | यह JDBC ड्राइवर का नाम लौटाएगा जिसका उपयोग हम अपने जावा प्रोग्राम में कर रहे हैं |
स्ट्रिंग getDriverVersion () | यह JDBC ड्राइवर वर्जन नंबर लौटाता है |
स्ट्रिंग getUserName () | यह उस डेटाबेस का उपयोगकर्ता नाम लौटाता है जिसका हम उपयोग कर रहे हैं |
स्ट्रिंग getDatabaseProductName () | यह उस डेटाबेस का नाम देता है जिसका हम उपयोग कर रहे हैं |
स्ट्रिंग getDatabaseProductVersion () | यह डेटाबेस का वर्जन नंबर देता है जिसका हम उपयोग कर रहे हैं |
ResultSet getSchemas () | यह कनेक्टेड डेटाबेस में उपलब्ध स्कीमा के नाम देता है |
स्ट्रिंग getTimeDateFunctions () | यह जुड़े डेटाबेस में उपलब्ध समय और दिनांक कार्यों की सूची देता है |
स्ट्रिंग getURL () | यह डेटाबेस के लिए URL लौटाता है |
बूलियन है। केवल () | यह देता है कि डेटाबेस केवल पढ़ने के लिए मोड में है |
बूलियन का समर्थन करता है बैच () | यह देता है कि क्या डेटाबेस बैच अपडेट का समर्थन करता है |
बूलियन समर्थन करता है () | यह देता है कि डेटाबेस Savepoint का समर्थन करता है या नहीं |
बूलियन का समर्थन करता है | यह रिटर्न करता है कि डेटाबेस स्टेटमेंट पूलिंग का समर्थन करता है या नहीं |
बूलियन का समर्थन करता हैStoredProcedures () | यह देता है कि क्या डेटाबेस संग्रहीत प्रक्रियाओं का समर्थन करता है |
बूलियन का समर्थन करता है (कंप्यूटर) | यह देता है कि डेटाबेस Outer Join का समर्थन करता है या नहीं |
यहाँ, हमने DatabaseMetaData इंटरफ़ेस के कुछ महत्वपूर्ण तरीकों को सूचीबद्ध किया है। आप की आधिकारिक साइट का उल्लेख कर सकते हैं आकाशवाणी जहाँ आप DatabaseMetaData इंटरफ़ेस में उपलब्ध सभी विधियों को देख सकते हैं।
DatabaseMetaData उदाहरण:
package com.STH.JDBC; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; public class DatabaseMetaData_Example { public static void main(String() args) throws ClassNotFoundException, SQLException { // TODO Auto-generated method stub Class.forName('oracle.jdbc.driver.OracleDriver'); Connection conn = DriverManager.getConnection('jdbc:oracle:thin:system/pass123@localhost:1521:XE'); DatabaseMetaData dbmd = conn.getMetaData(); System.out.println('Using DatabaseMetaData'); System.out.println('Driver Name: ' + dbmd.getDriverName()); System.out.println('Driver Version: '+ dbmd.getDriverVersion()); System.out.println('UserName of the Database: ' + dbmd.getUserName()); System.out.println('Database Product Name:' + dbmd.getDatabaseProductName()); System.out.println('Database Product Version: ' + dbmd.getDatabaseProductVersion()); System.out.println('List of String Functions in the Database: ' + dbmd.getStringFunctions()); System.out.println('List of Time & Date functions in the Database: ' + dbmd.getTimeDateFunctions()); System.out.println('URL of the Database: ' + dbmd.getURL()); System.out.println('Database is read - only? ' +dbmd.isReadOnly()); System.out.println('Support Batch Updates? ' + dbmd.supportsBatchUpdates()); System.out.println('Support savepoints? ' + dbmd.supportsSavepoints()); System.out.println('Support Statement Pooling? '+ dbmd.supportsStatementPooling()); System.out.println('Support Stored Procedures? ' + dbmd.supportsStoredProcedures()); System.out.println('Support Outer Join? '+ dbmd.supportsOuterJoins()); } }
OUTPUT:
स्पष्टीकरण:
उपरोक्त प्रोग्राम में, हमने getDriverName (), getDriverVersion (), getUserName (), getDatabaseProductName (), getDatabaseProductVersion (), getStringFunctions (), getTimeDateFunctions (), geturL (), (.RR) () का उपयोग किया है। , SupportStatementPooling (), SupportSavepoint (), supportStoredProcedures () और SupportMuterJoins () तरीके से DatabaseMetaData इंटरफ़ेस।
ध्यान दिए जाने वाले बिंदु:
- JDBC ResultSet इंटरफ़ेस का उपयोग डेटाबेस से डेटा को स्टोर करने और हमारे जावा प्रोग्राम में उपयोग करने के लिए किया जाता है।
- हम अपडेटXXX () विधियों का उपयोग करके डेटा को अपडेट करने के लिए ResultSet का भी उपयोग कर सकते हैं।
- परिणाम डेटा की पहली पंक्ति से पहले कर्सर परिणाम बताता है। अगली () विधि का उपयोग करके, हम परिणाम के माध्यम से पुनरावृति कर सकते हैं।
- ResultSet ऑब्जेक्ट में आगे बढ़ने के लिए हमारे पास ResultSet के नेविगेशनल तरीके हैं
- ResultMetaData का उपयोग ResultSet के बारे में अधिक जानकारी प्राप्त करने के लिए किया जाता है जैसे कॉलम का नाम, कॉलम की संख्या, कॉलम का डेटा टाइप आदि।
- DatabaseMetData का उपयोग उस डेटाबेस के बारे में जानकारी प्राप्त करने के लिए किया जाता है जिसे हमने कनेक्ट किया है
बार बार पूछे जाने वाले प्रश्न
Q # 1) रिजल्टसेट का उपयोग क्या है?
उत्तर: ResultSet का उपयोग DB से डेटा को स्टोर और पुनः प्राप्त करने के लिए किया जाता है। जब निष्पादित करें () विधि निष्पादित की गई है, तो यह ResultSet ऑब्जेक्ट वापस कर देगा। हम तर्क का प्रदर्शन करने के लिए अपने प्रोग्राम में उस रिजल्ट ऑब्जेक्ट का उपयोग कर सकते हैं।
Q # 2) कैसे चेक करें कि रिजल्टसेट खाली है या नहीं?
उत्तर: IsResultSet खाली करने के लिए लंबाई (), आकार () जैसे कोई पूर्वनिर्धारित तरीके उपलब्ध नहीं हैं। हम अगली () पद्धति का उपयोग करके इसे पुन: व्यवस्थित कर सकते हैं और यदि यह सत्य है, तो यह खाली नहीं है, यदि यह गलत है तो इसका मतलब है कि परिणाम रिक्त है।
Q # 3) क्या यह संभव है कि ResultSet शून्य हो सकता है?
उत्तर: नहीं, executeQuery () विधि परिणाम परिणाम देता है जो कभी भी अशक्त नहीं हो सकता है।
Q # 4) अद्यतन योग्य परिणाम क्या है?
उत्तर: एक अद्यतन योग्य ResultSet ऑब्जेक्ट का उपयोग कॉलम में डेटा को अपडेट करने, कॉलम में डेटा डालने और पंक्तियों को हटाने के लिए किया जाता है। एक अद्यतन योग्य के रूप में एक ResultSet बनाने के लिए, हमें स्क्रॉल प्रकार को संवेदनशील या असंवेदनशील और CONCUR प्रकार को अद्यतन करने योग्य बनाने की आवश्यकता है।
ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE.
Q # 5) जो डेटाबेस का नाम जुड़ा है, उसे कैसे प्राप्त करें?
उत्तर: हम डेटाबेसमाटाटाटा ऑब्जेक्ट के getDatabaseProductName () विधि का उपयोग कर सकते हैं।
निष्कर्ष
इस ट्यूटोरियल में, हमने चर्चा की कि ResultSet, ResultSetMetaData, और DatabaseMetaData इंटरफेस और आमतौर पर JDBC कार्यक्रमों में उपयोग किए जाने वाले उनके महत्वपूर्ण तरीके क्या हैं। हमने रिजल्टसेट का उपयोग करके डीबी में डेटा अपडेट करने का तरीका भी देखा है। ResultSetMetadata में कॉलम नाम, कॉलम संख्या और जैसे परिणाम के बारे में जानकारी शामिल है।
DatabaseMetaData में डेटाबेस जानकारी होती है।
अनुशंसित पाठ
- JDBC DriverManager, JDBC रेडीस्टेडमेंट और स्टेटमेंट
- Java JDBC ट्यूटोरियल: JDBC (जावा डेटाबेस कनेक्टिविटी) क्या है
- उदाहरण के साथ जावा JDBC लेन-देन प्रबंधन
- JDBC बैच प्रसंस्करण और संग्रहीत प्रक्रिया ट्यूटोरियल
- Java JDBC कनेक्शन ट्यूटोरियल प्रोग्रामिंग उदाहरण के साथ
- जावा में तुलनीय और तुलनात्मक इंटरफेस
- सेलेनियम डेटाबेस परीक्षण (WebDriver और JDBC API का उपयोग करके)
- JDBC अपवाद हैंडलिंग - SQL अपवाद को कैसे हैंडल करें