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

Parameterized Batch Update ใน JDBC คืออะไร? อธิบายด้วยตัวอย่าง?


การจัดกลุ่มชุดคำสั่ง INSERT หรือ UPDATE หรือ DELETE (ซึ่งสร้างค่าการนับการอัปเดต) และดำเนินการทันทีที่กลไกนี้เรียกว่าการอัปเดตแบบกลุ่ม

หากคุณส่ง quires ด้วยพารามิเตอร์โดยใช้การอัพเดตแบบกลุ่ม จะเรียกว่าการอัปเดตแบบกลุ่มที่มีพารามิเตอร์

โดยทั่วไป ในการดำเนินการอัปเดตแบบกลุ่ม คุณต้องเพิ่มคำสั่งที่จำเป็นทั้งหมดโดยใช้ addBatch() เมธอดและดำเนินการโดยใช้ executeBatch() วิธีการดังนี้:

//การสร้างคำสั่ง objectStatement stmt =con.createStatement();//Setting auto-commit falsecon.setAutoCommit(false);// การเพิ่มคำสั่งใน batchstmt.addBatch("INSERT INTO Sales VALUES ('KeyBoard', 'Amith', 'มกราคม', 1000, 'Hyderabad')");stmt.addBatch("INSERT INTO Sales VALUES ('Earphones', 'SUMITH', 'March', 500, 'Vishakhapatnam')");stmt. addBatch("INSERT INTO Sales VALUES ('Mouse', 'Sudha', 'September', 200, 'Vijayawada')");//ดำเนินการ batchstmt.executeBatch();

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

ขณะเพิ่มค่า คุณต้องเพิ่มค่าแต่ละชุดของคิวรีลงในแบตช์แล้วดำเนินการพร้อมกัน

การสร้างการอัพเดตแบทช์แบบกำหนดพารามิเตอร์

ในการสร้างการอัปเดตแบบกลุ่มที่มีพารามิเตอร์ คุณต้องสร้างคำสั่งที่เตรียมไว้เพื่อแทรก อัปเดต หรือลบค่าด้วยตัวยึดตำแหน่ง

ตั้งค่าให้กับตัวยึดตำแหน่ง พารามิเตอร์โดยใช้คำสั่ง setXXX() เพิ่มแต่ละชุดของค่าให้กับแบตช์โดยใช้เมธอด addbatch() สุดท้ายรันแบตช์โดยใช้เมธอด executeBatch

หมายเหตุ: ก่อนเพิ่มคำสั่งในกลุ่ม คุณต้องปิดการส่งอัตโนมัติโดยใช้ con.setAutoCommit(false) และหลังจากรันแบตช์แล้ว คุณต้องบันทึกการเปลี่ยนแปลงโดยใช้ con.commit() วิธีการ

ตัวอย่าง

สมมติว่าเราได้สร้างตารางชื่อ Sales ในฐานข้อมูลโดยมีคำอธิบายดังต่อไปนี้:

<ก่อนหน้า>+-------------------+--------------+------+---- -+---------+-------+| สนาม | พิมพ์ | Null | คีย์ | ค่าเริ่มต้น | พิเศษ |+-------------------+ --------------+------+ ----- +---------+-------+| Product_Name | varchar(255) | ใช่ | | NULL | || Name_Of_ลูกค้า | varchar(255) | ใช่ | | NULL | || Month_Of_Dispatch | varchar(255) | ใช่ | | NULL | || ราคา | int(11) | ใช่ | | NULL | || ที่ตั้ง | varchar(255) | ใช่ | | NULL | |+-------------------+--------------+------+----+ ---------+-------+

ตัวอย่างนี้พยายามแทรกชุดคำสั่งลงในตารางที่กล่าวถึงข้างต้นโดยใช้การอัพเดตแบตช์แบบกำหนดพารามิเตอร์

<ก่อน> นำเข้า java.sql.Connection นำเข้า java.sql.DriverManager นำเข้า java.sql.PreparedStatement นำเข้า java.sql.Statement คลาสสาธารณะ ParameterizedBatchUpdate { โมฆะแบบคงที่สาธารณะหลัก (สตริง args []) พ่นข้อยกเว้น { // รับการเชื่อมต่อ String mysqlUrl ="jdbc:mysql://localhost/testDB"; การเชื่อมต่อ con =DriverManager.getConnection (mysqlUrl, "root", "password"); System.out.println("การเชื่อมต่อสำเร็จ......"); //สร้างคำสั่งวัตถุงบ stmt =con.createStatement(); //การตั้งค่าการคอมมิตเท็จ con.setAutoCommit(เท็จ); PreparedStatement pstmt =con.prepareStatement("INSERT INTO มูลค่าการขาย (?, ?, ?, ?, ?)"); pstmt.setString(1, "คีย์บอร์ด"); pstmt.setString(2, "อมิท"); pstmt.setString(3, "มกราคม"); pstmt.setInt(4, 1000); pstmt.setString(5, "ไฮเดอราบาด"); pstmt.addBatch(); pstmt.setString(1, "หูฟัง"); pstmt.setString(2, "สุมิท"); pstmt.setString(3, "มีนาคม"); pstmt.setInt(4, 500); pstmt.setString(5, "วิศาขาปัตตนัม"); pstmt.addBatch(); pstmt.setString(1, "เมาส์"); pstmt.setString(2, "สุดา"); pstmt.setString(3, "กันยายน"); pstmt.setInt(4, 500); pstmt.setString(5, "วิศาขาปัตตนัม"); pstmt.addBatch(); //ดำเนินการชุดงาน stmt.executeBatch(); //กำลังบันทึกการเปลี่ยนแปลง con.commit(); System.out.println("บันทึกถูกแทรก......"); }}

ผลลัพธ์

เชื่อมต่อแล้ว......แทรกบันทึกแล้ว......