दो प्रकार के ResultSet होते हैं: फॉरवर्ड-ओनली और द्विदिश।
फॉरवर्ड-ओनली ResultSet: वह ResultSet ऑब्जेक्ट जिसका कर्सर केवल एक दिशा में चलता है, फॉरवर्ड-ओनली ResultSet के रूप में जाना जाता है। डिफ़ॉल्ट रूप से, JDBC ResultSet फॉरवर्ड-ओनली होते हैं।
आप ResultSet इंटरफ़ेस के next() मेथड का उपयोग करके फॉरवर्ड-ओनली ResultSets के कर्सर को स्थानांतरित कर सकते हैं। यह पॉइंटर को वर्तमान स्थिति से अगली पंक्ति पर ले जाता है। यह मेथड एक बूलियन मान लौटाता है। यदि इसकी वर्तमान स्थिति के आगे कोई पंक्ति नहीं है तो यह false लौटाता है, अन्यथा यह true लौटाता है।
इसलिए, while लूप में इस मेथड का उपयोग करके आप ResultSet ऑब्जेक्ट की सामग्री पर पुनरावृति कर सकते हैं।
while(rs.next()){ }उदाहरण
मान लें कि हमारे पास dataset नाम की एक टेबल है जिसकी सामग्री नीचे दिखाई गई है:
+--------------+-----------+ | mobile_brand | unit_sale | +--------------+-----------+ | Iphone | 3000 | | Samsung | 4000 | | Nokia | 5000 | | Vivo | 1500 | +--------------+-----------+
निम्नलिखित उदाहरण Dataset टेबल के सभी रिकॉर्ड पुनर्प्राप्त करता है और परिणाम प्रिंट करता है:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class RetrievingData { public static void main(String args[]) throws Exception { // ड्राइवर रजिस्टर करना DriverManager.registerDriver(new com.mysql.jdbc.Driver()); // कनेक्शन प्राप्त करना String mysqlUrl = "jdbc:mysql://localhost/TestDB"; Connection con = DriverManager.getConnection(mysqlUrl, "root", "password"); System.out.println("Connection established......"); // Statement ऑब्जेक्ट बनाना Statement stmt = con.createStatement(); // डेटा पुनर्प्राप्त करना ResultSet rs = stmt.executeQuery("select * from Dataset"); System.out.println("Contents of the table"); while(rs.next()) { System.out.print("Brand: "+rs.getString("Mobile_Brand")+", "); System.out.print("Sale: "+rs.getString("Unit_Sale")); System.out.println(""); } } }आउटपुट
Connection established...... Contents of the table Brand: Iphone, Sale: 3000 Brand: Samsung, Sale: 4000 Brand: Nokia, Sale: 5000 Brand: Vivo, Sale: 1500
द्विदिश ResultSet: एक द्विदिश ResultSet ऑब्जेक्ट वह है जिसका कर्सर आगे और पीछे दोनों दिशाओं में चलता है।
Connection इंटरफ़ेस के createStatement() मेथड का एक वेरिएंट है जो दो पूर्णांक मान स्वीकार करता है जो ResultSet टाइप और कंकरेंसी टाइप को दर्शाते हैं।
Statement createStatement(int resultSetType, int resultSetConcurrency)
द्विदिश ResultSet बनाने के लिए, आपको टाइप के रूप में ResultSet.TYPE_SCROLL_SENSITIVE या ResultSet.TYPE_SCROLL_INSENSITIVE, कंकरेंसी के साथ, इस मेथड को पास करना होगा:
// Statement ऑब्जेक्ट बनाना Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
उदाहरण
निम्नलिखित उदाहरण द्विदिश ResultSet के निर्माण को दर्शाता है। यहाँ हम एक द्विदिश ResultSet ऑब्जेक्ट बनाने का प्रयास कर रहे हैं जो dataset नाम की टेबल से डेटा पुनर्प्राप्त करता है और, हम previous() मेथड का उपयोग करके dataset टेबल की पंक्तियों को अंतिम से पहले प्रिंट करने का प्रयास कर रहे हैं।
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class BidirectionalResultSet { public static void main(String args[]) throws Exception { // ड्राइवर रजिस्टर करना DriverManager.registerDriver(new com.mysql.jdbc.Driver()); // कनेक्शन प्राप्त करना String mysqlUrl = "jdbc:mysql://localhost/TestDB"; Connection con = DriverManager.getConnection(mysqlUrl, "root", "password"); System.out.println("Connection established......"); // Statement ऑब्जेक्ट बनाना Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); // डेटा पुनर्प्राप्त करना ResultSet rs = stmt.executeQuery("select * from Dataset"); rs.afterLast(); System.out.println("Contents of the table"); while(rs.previous()) { System.out.print("Brand: "+rs.getString("Mobile_Brand")+", "); System.out.print("Sale: "+rs.getString("Unit_Sale")); System.out.println(""); } } }आउटपुट
Connection established...... Contents of the table Brand: Vivo, Sale: 1500 Brand: Nokia, Sale: 5000 Brand: Samsung, Sale: 4000 Brand: IPhone, Sale: 3000