Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ชุดผลลัพธ์ใน JDBC มีกี่ประเภท อะไรบ้าง?


ชุดผลลัพธ์มีสองประเภท ได้แก่ ส่งต่อเท่านั้นและแบบสองทิศทาง

ส่งต่อชุดผลลัพธ์เท่านั้น: วัตถุ ResultSet ที่เคอร์เซอร์เคลื่อนที่ในทิศทางเดียวเท่านั้นเรียกว่า ResultSet ไปข้างหน้าเท่านั้น โดยค่าเริ่มต้น ชุดผลลัพธ์ JDBC จะเป็นชุดผลลัพธ์แบบส่งต่อเท่านั้น

คุณสามารถย้ายเคอร์เซอร์ไปข้างหน้าเท่านั้น ResultSets โดยใช้ next() เมธอดของอินเทอร์เฟซ ResultSet โดยจะย้ายตัวชี้ไปยังแถวถัดไปจากตำแหน่งปัจจุบัน เมธอดนี้คืนค่าบูลีน หากไม่มีแถวถัดจากตำแหน่งปัจจุบัน มันจะคืนค่าเท็จ ไม่เช่นนั้นก็จะคืนค่าเป็น จริง

ดังนั้น เมื่อใช้วิธีนี้ในลูป while คุณสามารถวนซ้ำเนื้อหาของออบเจกต์ ResultSet

ในขณะที่(rs.next()){}

ตัวอย่าง

สมมติว่าเรามีตารางชื่อชุดข้อมูลที่มีเนื้อหาดังแสดงด้านล่าง:

<ก่อนหน้า>+-------------+-----------+| mobile_brand | unit_sale |+-------------+-----------+| Iphone | 3000 || ซัมซุง | 4000 || Nokia | 5000 || Vivo | 1500 |+-------------+-----------+

ตัวอย่างต่อไปนี้ดึงบันทึกทั้งหมดของ ชุดข้อมูล ตารางและพิมพ์ผลลัพธ์:

<ก่อนหน้า> นำเข้า java.sql.Connection นำเข้า java.sql.DriverManager นำเข้า java.sql.ResultSet นำเข้า java.sql.Statement คลาสสาธารณะ RetrievingData { โมฆะคงที่สาธารณะหลัก (สตริง args []) พ่นข้อยกเว้น { // การลงทะเบียนไดร์เวอร์ DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //รับการเชื่อมต่อสตริง mysqlUrl ="jdbc:mysql://localhost/TestDB"; การเชื่อมต่อ con =DriverManager.getConnection (mysqlUrl, "root", "password"); System.out.println("การเชื่อมต่อสำเร็จ......"); //สร้างคำสั่งวัตถุงบ stmt =con.createStatement(); //ดึงข้อมูล ResultSet rs =stmt.executeQuery("select * from Dataset"); System.out.println("เนื้อหาของตาราง"); while(rs.next()) { System.out.print("ยี่ห้อ:"+rs.getString("Mobile_Brand")+", "); System.out.print("การขาย:"+rs.getString("Unit_Sale")); System.out.println(""); } }}

ผลลัพธ์

เชื่อมต่อแล้ว......เนื้อหาของตารางยี่ห้อ:Iphone, ขาย:3000ยี่ห้อ:Samsung, ขาย:4000ยี่ห้อ:Nokia, ขาย:5000ยี่ห้อ:Vivo, ขาย:1500

ชุดผลลัพธ์แบบสองทิศทาง: วัตถุ ResultSet แบบสองทิศทางคือวัตถุที่เคอร์เซอร์เคลื่อนที่ทั้งในทิศทางไปข้างหน้าและข้างหลัง

เมธอด createStatement() ของอินเทอร์เฟซการเชื่อมต่อมีตัวแปรที่ยอมรับค่าจำนวนเต็มสองค่าซึ่งแสดงถึงประเภทชุดผลลัพธ์และประเภทการทำงานพร้อมกัน

คำสั่ง createStatement(int resultSetType, int resultSetConcurrency)

ในการสร้างชุดผลลัพธ์แบบสองทิศทาง คุณต้องส่งประเภทเป็น ResultSet.TYPE_SCROLL_SENSITIVE หรือ ResultSet.TYPE_SCROLL_INSENSITIVE พร้อมกับการทำงานพร้อมกัน ไปยังวิธีนี้เป็น:

//การสร้างคำสั่ง objectStatement stmt =con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

ตัวอย่าง

ตัวอย่างต่อไปนี้สาธิตการสร้าง ResultSet แบบสองทิศทาง ที่นี่ เราพยายามสร้างวัตถุ ResultSet แบบสองทิศทางซึ่งดึงข้อมูลจากชุดข้อมูลชื่อตาราง และเรากำลังพยายามพิมพ์แถวของตารางชุดข้อมูลจากล่าสุดไปแรกโดยใช้ previous() วิธีการ

<ก่อน> นำเข้า java.sql.Connection นำเข้า java.sql.DriverManager นำเข้า java.sql.ResultSet นำเข้า java.sql.Statement คลาสสาธารณะ BidirectionalResultSet { โมฆะคงที่สาธารณะหลัก (สตริง args []) พ่นข้อยกเว้น { // การลงทะเบียนไดร์เวอร์ DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //รับการเชื่อมต่อสตริง mysqlUrl ="jdbc:mysql://localhost/TestDB"; การเชื่อมต่อ con =DriverManager.getConnection (mysqlUrl, "root", "password"); System.out.println("การเชื่อมต่อสำเร็จ......"); //สร้างคำสั่งวัตถุงบ stmt =con.createStatement (ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); //ดึงข้อมูล ResultSet rs =stmt.executeQuery("select * from Dataset"); rs.afterLast(); System.out.println("เนื้อหาของตาราง"); while(rs.previous()) { System.out.print("Brand:"+rs.getString("Mobile_Brand")+", "); System.out.print("ลดราคา:"+rs.getString("Unit_Sale")); System.out.println(""); } }}

ผลลัพธ์

เชื่อมต่อแล้ว......เนื้อหาของตารางBrand:Vivo, Sale:1500Brand:Nokia, Sale:5000Brand:Samsung, Sale:4000Brand:IPhone, Sale:3000