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

จะอัพเดตเนื้อหาของ ResultSet โดยใช้โปรแกรม JDBC ได้อย่างไร?


ในการอัปเดตเนื้อหาของ ResultSet คุณต้องสร้างคำสั่งโดยส่งประเภท ResultSet ที่สามารถอัปเดตได้ เช่น:

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

เช่นเดียวกับเมธอด getXXX() และ setXXX() อินเตอร์เฟส ResultSet ยังมีเมธอดในการอัปเดตเนื้อหาของแถวในชุดผลลัพธ์ updateXXX()

เมธอดเหล่านี้ยอมรับค่าจำนวนเต็มที่แทนดัชนีหรือค่าสตริงที่แทนป้ายกำกับคอลัมน์ของแถวที่จะอัปเดต

โปรดทราบว่าหากคุณต้องการอัปเดตเนื้อหาของ ResultSet ตารางควรมีคีย์หลัก

ตัวอย่าง

สมมติว่าเรามีตารางชื่อ Employees มี 5 รายการดังแสดงด้านล่าง:

<ก่อนหน้า>+----+---------+---------+----------------+| รหัส | ชื่อ | เงินเดือน | ที่ตั้ง |+----+---------+---------+----------------+| 1 | อามิต | 3000 | ไฮเดอราบัด || 2 | กัลยัน | 4000 | วิศาขาปัตตนัม || 3 | เรนูกะ | 6000 | เดลี || 4 | อาชาน่า | 9000 | มุมไบ || 5 | สุมิธ | 11000 | ไฮเดอราบัด |+----+---------+---------+----------------+

ตัวอย่างต่อไปนี้สาธิตวิธีอัปเดตเนื้อหาของชุดผลลัพธ์:

<ก่อน>นำเข้า java.sql.*; คลาสสาธารณะ ResultSetExample { โมฆะสาธารณะหลัก (สตริง [] args) พ่นข้อยกเว้น {// การลงทะเบียนไดรเวอร์ DriverManager.registerDriver (ใหม่ 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 Employees"); //การพิมพ์เนื้อหาของตาราง System.out.println("เนื้อหาของตาราง:"); printRs(rs); //การย้ายตัวชี้ไปยังจุดเริ่มต้นใน ResultSet rs.beforeFirst(); //อัปเดตเงินเดือนของพนักงานแต่ละคน 5,000 ในขณะที่ (rs.next()){ //ดึงข้อมูลตามชื่อคอลัมน์ int newSal =rs.getInt("เงินเดือน") + 5000; rs.updateInt( "เงินเดือน", newSal ); rs.updateRow(); } System.out.println("เนื้อหาของชุดผลลัพธ์หลังจากขึ้นเงินเดือน"); printRs(rs); // ตั้งค่าตำแหน่งเป็นระเบียนที่สองก่อน rs.beforeFirst(); rs.แน่นอน(2); System.out.println("บันทึกที่เราจำเป็นต้องลบ:"); System.out.print("ID:" + rs.getInt("id")); System.out.print(", เงินเดือน:" + rs.getInt("เงินเดือน")); System.out.print(", ชื่อ:" + rs.getString("Name")); System.out.println(", ตำแหน่ง:" + rs.getString("Location")); System.out.println(" "); //การลบแถว rs.deleteRow(); System.out.println("เนื้อหาของชุดผลลัพธ์หลังจากลบหนึ่งระเบียน..."); printRs(rs); System.out.println("ลาก่อน!"); } โมฆะคงที่สาธารณะ printRs (ResultSet rs) พ่น SQLException{ // ตรวจสอบให้แน่ใจว่าเราเริ่มต้นด้วยแถวแรก rs.beforeFirst(); while(rs.next()){ System.out.print("ID:" + rs.getInt("id")); System.out.print(", เงินเดือน:" + rs.getInt("เงินเดือน")); System.out.print(", ชื่อ:" + rs.getString("Name")); System.out.println(", ตำแหน่ง:" + rs.getString("Location")); } System.out.println(); }}

ผลลัพธ์

เชื่อมต่อแล้ว......เนื้อหาของตาราง:ID:1, เงินเดือน:3000, ชื่อ:Amit, ที่ตั้ง:HyderabadID:2, เงินเดือน:4000, ชื่อ:Kalyan, ที่ตั้ง:VishakhapatnamID:3, เงินเดือน:6000 ชื่อ:Renuka ตำแหน่ง:DelhiID:4 เงินเดือน:9000 ชื่อ:Archana ตำแหน่ง:MumbaiID:5 เงินเดือน:11000 ชื่อ:Sumith ตำแหน่ง:HyderabadConetnets ของ resultset หลังจากเพิ่มเงินเดือน ID:1 เงินเดือน:8000, ชื่อ:Amit ที่ตั้ง:HyderabadID:2 เงินเดือน:9000 ชื่อ:Kalyan ที่ตั้ง:VishakhapatnamID:3 เงินเดือน:11000 ชื่อ:Renuka ที่ตั้ง:DelhiID:4 เงินเดือน:14000 ชื่อ:Archana ที่ตั้ง:มุมไบID:5 เงินเดือน:16000 ชื่อ:Sumith ตำแหน่ง:HyderabadRecord เราต้องลบ:ID:2 เงินเดือน:9000 ชื่อ:Kalyan ตำแหน่ง:Vishakhapatnamเนื้อหาของชุดผลลัพธ์หลังจากลบหนึ่งระเบียน... ID:1 เงินเดือน:8000 , ชื่อ:Amit, ที่ตั้ง:HyderabadID:3, เงินเดือน:11000, ชื่อ:Renuka, ที่ตั้ง:DelhiID:4, เงินเดือน:14000, ชื่อ:Archana, ที่ตั้ง:MumbaiID:5, เงินเดือน:16000, ชื่อ:Sumith, ที่ตั้ง:HyderabadGoodby อี!