อินสแตนซ์วัตถุคำสั่ง JDBC
นี่คือตัวอย่างของการใช้คำแนะนำสามข้อต่อไปนี้และคำแนะนำในการเปิดและปิด:
บูลีนดำเนินการ (สตริง SQL): ส่งคืนค่าบูลีนจริงถ้าสามารถเรียกคืนวัตถุ Resuredet ได้มิฉะนั้นจะส่งคืนเท็จ ใช้วิธีนี้เพื่อเรียกใช้คำสั่ง SQL DDL หรือเมื่อใช้ SQL แบบไดนามิกจริง
int executeUpdate (String SQL): ส่งคืนจำนวนแถวที่ดำเนินการโดยคำสั่ง SQL ที่ได้รับผลกระทบ ใช้วิธีนี้เพื่อดำเนินการและหวังว่าจะได้รับคำสั่ง SQL แถวที่ได้รับผลกระทบ - ตัวอย่างเช่นแทรกอัปเดตหรือลบคำสั่ง
ResultSet ExecuteQuery (String SQL): ส่งคืนวัตถุ Resuredet ใช้วิธีนี้เมื่อคุณต้องการตั้งค่าผลลัพธ์เช่นเดียวกับการใช้คำสั่ง SELECT
รหัสตัวอย่างนี้ขึ้นอยู่กับการติดตั้งสภาพแวดล้อมและฐานข้อมูลในบทก่อนหน้านี้ได้ถูกเขียนขึ้น
คัดลอกตัวอย่างต่อไปนี้ jdbcexample.java, รวบรวมและเรียกใช้ตามที่แสดงด้านล่าง:
// ขั้นตอนที่ 1. นำเข้าแพ็คเกจที่ต้องการ java.sql.*; คลาสสาธารณะ JDBCEXAMPLE {// ชื่อไดรเวอร์ JDBC และ URL ฐานข้อมูลคงที่สตริงสุดท้าย jdbc_driver = "com.mysql.jdbc.driver"; สตริงสุดท้ายคงที่ db_url = "jdbc: mysql: // localhost/emp"; // ข้อมูลรับรองฐานข้อมูลสตริงสุดท้ายคงที่ user = "ชื่อผู้ใช้"; สตริงสุดท้ายคงที่ = "รหัสผ่าน"; โมฆะคงที่สาธารณะหลัก (สตริง [] args) {การเชื่อมต่อ conn = null; คำสั่ง stmt = null; ลอง {// ขั้นตอนที่ 2: ลงทะเบียนคลาสไดรเวอร์ JDBC forName ("com.mysql.jdbc.driver"); // ขั้นตอนที่ 3: เปิดระบบการเชื่อมต่อ. out.println ("การเชื่อมต่อกับฐานข้อมูล ... "); conn = drivermanager.getConnection (db_url, ผู้ใช้, ผ่าน); // ขั้นตอนที่ 4: ดำเนินการแบบสอบถาม System.out.println ("การสร้างคำสั่ง ... "); stmt = conn.createstatement (); String SQL = "อัพเดทพนักงานตั้งค่าอายุ = 30 โดยที่ id = 103"; // ให้เราตรวจสอบว่ามันส่งคืนชุดผลลัพธ์จริงหรือไม่ บูลีน ret = stmt.execute (SQL); System.out.println ("ค่าส่งคืนคือ:" + ret.toString ()); // ให้เราอัปเดตอายุของบันทึกด้วย id = 103; int rows = stmt.executeUpdate (SQL); System.out.println ("แถวที่ได้รับผลกระทบ:" + แถว); // ให้เราเลือกบันทึกทั้งหมดและแสดง SQL = "SELECT ID, FIRST, LANT, อายุจากพนักงาน"; resultset rs = stmt.executeQuery (SQL); // ขั้นตอนที่ 5: แยกข้อมูลจากชุดผลลัพธ์ในขณะที่ (Rs.Next ()) {// ดึงข้อมูลตามชื่อคอลัมน์ int id = rs.getInt ("id"); อายุ int = Rs.getInt ("อายุ"); String First = Rs.getString ("First"); String last = rs.getString ("สุดท้าย"); // แสดงค่า system.out.print ("id:" + id); System.out.print (", อายุ:" + อายุ); System.out.print (", First:" + First); System.out.println (", สุดท้าย:" + สุดท้าย); } // ขั้นตอนที่ 6: สภาพแวดล้อมการทำความสะอาด rs.close (); stmt.close (); conn.close (); } catch (sqlexception se) {// จัดการข้อผิดพลาดสำหรับ jdbc se.printstacktrace (); } catch (exception e) {// จัดการข้อผิดพลาดสำหรับ class.forName e.printStackTrace (); } ในที่สุด {// ในที่สุดบล็อกที่ใช้ในการปิดทรัพยากรลอง {ถ้า (stmt! = null) stmt.close (); } catch (sqlexception se2) {} // ไม่มีอะไรที่เราสามารถลอง {ถ้า (conn! = null) conn.close (); } catch (sqlexception se) {se.printstacktrace (); } // สิ้นสุดในที่สุดลอง} // end try system.out.println ("ลาก่อน!"); } // สิ้นสุดหลัก} // สิ้นสุด jdbcexampleตอนนี้รวบรวมตัวอย่างข้างต้นดังนี้:
c:> javac jdbcexample.java
เมื่อเรียกใช้ JDBCEXAMPLE มันจะให้ผลลัพธ์ต่อไปนี้:
c:> java jdbcexample
การเชื่อมต่อกับฐานข้อมูล ... การสร้างคำสั่ง ... ค่าส่งคืนคือ: Falserows ได้รับผลกระทบ: 1id: 100, อายุ: 18, แรก: Zara, สุดท้าย: Aliid: 101, อายุ: 25, แรก: Mahnaz, สุดท้าย: Fatmaid: 102, อายุ: 30, First: Zaid, สุดท้าย: Khanid: 103, อายุ: 30, First: Sumit
อินสแตนซ์ออบเจ็กต์วัตถุ JDBC callablestatement
นี่คือตัวอย่างของขั้นตอนการจัดเก็บ MySQL โดยใช้ callablestatement พร้อมกับ getempname () ต่อไปนี้::
โปรดตรวจสอบให้แน่ใจว่าขั้นตอนที่จัดเก็บได้ถูกสร้างขึ้นในฐานข้อมูล EMP สามารถทำได้โดยใช้เบราว์เซอร์ MySQL Query
ตัวคั่น $$ ขั้นตอนการลดลงหากมีอยู่ `emp`.`getEmpName` $$ สร้างขั้นตอน` emp`.`getEmpName` (ใน emp_id int ออก emp_first varchar (255)) เริ่มเลือกก่อนเป็น emp_first จากพนักงานที่ id = emp_id;
รหัสสคริปต์นี้ถูกเขียนขึ้นอยู่กับการติดตั้งสภาพแวดล้อมและฐานข้อมูลในบทก่อนหน้า
คัดลอกตัวอย่างต่อไปนี้ jdbcexample.java, รวบรวมและเรียกใช้ตามที่แสดงด้านล่าง:
// ขั้นตอนที่ 1. นำเข้าแพ็คเกจที่ต้องการ java.sql.*; คลาสสาธารณะ JDBCEXAMPLE {// ชื่อไดรเวอร์ JDBC และ URL ฐานข้อมูลคงที่สตริงสุดท้าย jdbc_driver = "com.mysql.jdbc.driver"; สตริงสุดท้ายคงที่ db_url = "jdbc: mysql: // localhost/emp"; // ข้อมูลรับรองฐานข้อมูลสตริงสุดท้ายคงที่ user = "ชื่อผู้ใช้"; สตริงสุดท้ายคงที่ = "รหัสผ่าน"; โมฆะคงที่สาธารณะหลัก (สตริง [] args) {การเชื่อมต่อ conn = null; callablestatement stmt = null; ลอง {// ขั้นตอนที่ 2: ลงทะเบียนคลาสไดรเวอร์ JDBC forName ("com.mysql.jdbc.driver"); // ขั้นตอนที่ 3: เปิดระบบการเชื่อมต่อ. out.println ("การเชื่อมต่อกับฐานข้อมูล ... "); conn = drivermanager.getConnection (db_url, ผู้ใช้, ผ่าน); // ขั้นตอนที่ 4: ดำเนินการแบบสอบถาม System.out.println ("การสร้างคำสั่ง ... "); String sql = "{call getempname (?,?)}"; stmt = conn.preparecall (SQL); // ผูกในพารามิเตอร์ก่อนจากนั้นผูกพารามิเตอร์ int empid = 102; stmt.setint (1, empid); // สิ่งนี้จะตั้งค่า ID เป็น 102 // เนื่องจากพารามิเตอร์ที่สองออกแล้วลงทะเบียน stmt.registeroutparameter (2, java.sql.types.varchar); // ใช้วิธีการดำเนินการเพื่อเรียกใช้ขั้นตอนที่เก็บไว้ System.out.println ("ดำเนินการขั้นตอนที่เก็บไว้ ... "); stmt.execute (); // ดึงชื่อพนักงานด้วยสตริงวิธี getXXX empname = stmt.getString (2); System.out.println ("ชื่อ EMP พร้อม ID:" + EMPID + "คือ" + EmpName); stmt.close (); conn.close (); } catch (sqlexception se) {// จัดการข้อผิดพลาดสำหรับ jdbc se.printstacktrace (); } catch (exception e) {// จัดการข้อผิดพลาดสำหรับ class.forName e.printStackTrace (); } ในที่สุด {// ในที่สุดบล็อกที่ใช้ในการปิดทรัพยากรลอง {ถ้า (stmt! = null) stmt.close (); } catch (sqlexception se2) {} // ไม่มีอะไรที่เราสามารถลอง {ถ้า (conn! = null) conn.close (); } catch (sqlexception se) {se.printstacktrace (); } // สิ้นสุดในที่สุดลอง} // end try system.out.println ("ลาก่อน!"); } // สิ้นสุดหลัก} // สิ้นสุด jdbcexampleตอนนี้รวบรวมตัวอย่างข้างต้นดังนี้:
c:> javac jdbcexample.java
เมื่อเรียกใช้ JDBCEXAMPLE มันจะให้ผลลัพธ์ต่อไปนี้:
c:> java jdbcexample
การเชื่อมต่อกับฐานข้อมูล ... การสร้างคำสั่ง ... การดำเนินการขั้นตอนที่เก็บไว้ ... ชื่อ EMP กับ ID: 102 คือ Zaidgoodbye!