দুই ধরনের ফলাফল সেট আছে, শুধুমাত্র ফরোয়ার্ড এবং দ্বিমুখী।
শুধুমাত্র ফলাফল সেট ফরওয়ার্ড করুন: যে রেজাল্টসেট অবজেক্টের কার্সার শুধুমাত্র এক দিকে চলে সেটি ফরওয়ার্ড অনলি রেজাল্টসেট নামে পরিচিত। ডিফল্টরূপে, JDBC ফলাফল সেটগুলি ফরোয়ার্ড-অনলি ফলাফল সেট।
আপনি শুধুমাত্র ফলাফল সেট ফরওয়ার্ডের কার্সারটি সরাতে পারেন পরবর্তী() ব্যবহার করে ফলাফল সেট ইন্টারফেসের পদ্ধতি। এটি পয়েন্টারটিকে বর্তমান অবস্থান থেকে পরবর্তী সারিতে নিয়ে যায়। এই পদ্ধতিটি একটি বুলিয়ান মান প্রদান করে। যদি এর বর্তমান অবস্থানের পাশে কোন সারি না থাকে তবে এটি মিথ্যা দেখায়, অন্যথায় এটি সত্য দেখায়।
অতএব, while লুপে এই পদ্ধতি ব্যবহার করে আপনি ResultSet অবজেক্টের বিষয়বস্তু পুনরাবৃত্তি করতে পারেন।
while(rs.next()){ }
উদাহরণ
অনুমান করুন আমাদের কাছে নীচে দেখানো বিষয়বস্তু সহ ডেটাসেট নামে একটি টেবিল রয়েছে:
+--------------+-----------+ | mobile_brand | unit_sale | +--------------+-----------+ | Iphone | 3000 | | Samsung | 4000 | | Nokia | 5000 | | Vivo | 1500 | +--------------+-----------+
নিম্নলিখিত উদাহরণটি ডেটাসেট-এর সমস্ত রেকর্ড পুনরুদ্ধার করে টেবিল এবং ফলাফল প্রিন্ট করে:
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 { //Registering the Driver DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //Getting the connection String mysqlUrl = "jdbc:mysql://localhost/TestDB"; Connection con = DriverManager.getConnection(mysqlUrl, "root", "password"); System.out.println("Connection established......"); //Creating a Statement object Statement stmt = con.createStatement(); //Retrieving the data 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
দ্বিমুখী ফলাফল সেট: একটি দ্বি-দিকনির্দেশক ফলাফলসেট বস্তু হল যেটির কার্সার সামনের দিকে এবং পিছনের দিকে উভয় দিকে চলে।
কানেকশন ইন্টারফেসের createStatement() পদ্ধতিতে একটি বৈকল্পিক রয়েছে যা ফলাফল সেটের ধরন এবং সমবর্তন প্রকারের প্রতিনিধিত্বকারী দুটি পূর্ণসংখ্যা মান গ্রহণ করে।
Statement createStatement(int resultSetType, int resultSetConcurrency)
একটি দ্বি-দিকনির্দেশক ফলাফল সেট তৈরি করতে আপনাকে এই পদ্ধতিতে ResultSet.TYPE_SCROLL_SENSITIVE বা ResultSet.TYPE_SCROLL_INSENSITIVE, সঙ্গতি সহ, এই পদ্ধতিতে টাইপ পাস করতে হবে:
//Creating a Statement object Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
উদাহরণ
নিম্নলিখিত উদাহরণ দ্বি-দিকনির্দেশক ফলাফল সেট তৈরি প্রদর্শন করে। এখানে আমরা একটি দ্বি-দিকনির্দেশক ফলাফল সেট অবজেক্ট তৈরি করার চেষ্টা করছি যা টেবিলের নামের ডেটাসেট থেকে ডেটা পুনরুদ্ধার করে এবং আমরা আগের() ব্যবহার করে শেষ থেকে প্রথম পর্যন্ত ডেটাসেট টেবিলের সারিগুলি প্রিন্ট করার চেষ্টা করছি। পদ্ধতি।
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 { //Registering the Driver DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //Getting the connection String mysqlUrl = "jdbc:mysql://localhost/TestDB"; Connection con = DriverManager.getConnection(mysqlUrl, "root", "password"); System.out.println("Connection established......"); //Creating a Statement object Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); //Retrieving the data 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