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

เราจะปิดทรัพยากรโดยอัตโนมัติใน Java ได้อย่างไร


คุณสามารถปิดทรัพยากรโดยอัตโนมัติโดยใช้ try-with-resources ใน JDBC

ไวยากรณ์

ลอง (การประกาศทรัพยากร){ เนื้อหา.....} catch (SQLException e) { e.printStackTrace ();}

เป็นคำสั่ง try ที่มีทรัพยากรตั้งแต่หนึ่งรายการขึ้นไปประกาศเมื่อลอง โดยที่ทรัพยากรเป็นวัตถุที่ควรปิดเมื่อไม่ต้องการอีกต่อไป

คุณสามารถประกาศทรัพยากรได้หลายรายการในรายการนี้ และทรัพยากรทั้งหมดจะถูกปิดที่ส่วนท้ายของคำสั่งโดยอัตโนมัติ

ออบเจ็กต์/ทรัพยากรที่เราประกาศในนี้ควรใช้ java.lang.AutoCloseable หรือ java.io.Closeable อินเทอร์เฟซหรือขยาย java.lang.AutoCloseable ชั้นเรียน

ใน JDBC เราสามารถใช้ java.sql.CallableStatement, Connection, PreparedStatement, Statement, ResultSet และ RowSet ใน ลองใช้ทรัพยากร คำสั่ง

ตัวอย่าง

ให้เราสร้างตารางที่มีชื่อ MyPlayers ในฐานข้อมูล MySQL โดยใช้คำสั่ง CREATE ดังที่แสดงด้านล่าง -

สร้างตาราง MyPlayers( ID INT, First_Name VARCHAR(255), Last_Name VARCHAR(255), Date_Of_Birth date, Place_Of_Birth VARCHAR(255), Country VARCHAR(255), PRIMARY KEY (ID));

ตอนนี้ เราจะแทรก 7 ระเบียนในตาราง MyPlayers โดยใช้คำสั่ง INSERT -

แทรกลงในค่า MyPlayers (1, 'Shikhar', 'Dhawan', DATE('1981-12-05'), 'Delhi', 'India');แทรกลงในค่า MyPlayers (2, 'Jonathan', ' Trott', DATE('1981-04-22'), 'CapeTown', 'SouthAfrica');แทรกลงในค่า MyPlayers(3, 'Kumara', 'Sangakkara', DATE('1977-10-27'), ' Matale', 'Srilanka');แทรกลงในค่า MyPlayers (4, 'Virat', 'Kohli', DATE('1988-11-05'), 'Delhi', 'India');แทรกลงในค่า MyPlayers(5, 'Rohit', 'Sharma', DATE('1987-04-30'), 'Nagpur', 'India');แทรกลงในค่า MyPlayers (6, 'Ravindra', 'Jadeja', DATE('1988-12- 06'), 'นักปูร์', 'อินเดีย');แทรกลงในค่า MyPlayers (7, 'James', 'Anderson', DATE('1982-06-30'), 'Burnley', 'England'); 

โปรแกรม JDBC ต่อไปนี้จะสาธิตวิธีการใช้คำสั่ง try-with-resources ใน JDBC -

<ก่อนหน้า> นำเข้า java.sql.Connection นำเข้า java.sql.DriverManager นำเข้า java.sql.ResultSet นำเข้า java.sql.SQLException นำเข้า java.sql.Statement คลาสสาธารณะ TryWithResources_Example { โมฆะสาธารณะสาธารณะหลัก (สตริง args ]) {// การรับสตริงการเชื่อมต่อ mysqlUrl ="jdbc:mysql://localhost/mydatabase"; System.out.println("การเชื่อมต่อสำเร็จ......"); // การลงทะเบียนไดรเวอร์ลอง (Connection con =DriverManager.getConnection (mysqlUrl, "root", "password"); คำชี้แจง stmt =con.createStatement (); ) { ลอง (ResultSet rs =stmt.executeQuery ("เลือก * จาก MyPlayers ");) { //ดึงข้อมูลในขณะที่ (rs.next ()) { System.out.print (rs.getInt ("ID")+", "); System.out.print(rs.getString("First_Name")+", "); System.out.print(rs.getString("Last_Name")+", "); System.out.print(rs.getDate("Date_Of_Birth")+", "); System.out.print(rs.getString("Place_Of_Birth")+", "); System.out.print(rs.getString("ประเทศ")); System.out.println(); } } จับ (SQLException จ) { e.printStackTrace (); } } จับ (SQLException จ) { e.printStackTrace (); } }}

ผลลัพธ์

เชื่อมต่อแล้ว......1, Shikhar, Dhawan, 1981-12-05, Delhi, India2, Jonathan, Trott, 1981-04-22, CapeTown, SouthAfrica3, Kumara, Sangakkara, 1977-10-27 , Matale, Srilanka4, Virat, Kohli, 1988-11-05, Mumbai, India5, Rohit, Sharma, 1987-04-30, Nagpur, India6, Ravindra, Jadeja, 1988-12-06, Nagpur, India7, James, Anderson , 1982-06-30, Burnely, England8, Ryan, McLaren, 1983-02-09, Kumberly, null