คำนำ: JDBC คืออะไร
การเชื่อมต่อฐานข้อมูล Java (JDBC) เป็นอินเทอร์เฟซโปรแกรมแอปพลิเคชันที่ใช้ในภาษา Java เพื่อสร้างมาตรฐานวิธีการเข้าถึงฐานข้อมูลของโปรแกรมไคลเอนต์การให้วิธีการเช่นการสืบค้นและการอัปเดตข้อมูลในฐานข้อมูล JDBC ยังเป็นเครื่องหมายการค้าของ Sun Microsystems มันเป็น JDBC สำหรับฐานข้อมูลเชิงสัมพันธ์
พูดง่ายๆคือ Java API ที่ใช้ในการเรียกใช้คำสั่ง SQL ผ่านการห่อหุ้มนักพัฒนาสามารถใช้ Java APIs บริสุทธิ์เพื่อดำเนินการ SQL ให้เสร็จสมบูรณ์
1. การเตรียมงาน (i): การกำหนดค่าการติดตั้ง MySQL และการเรียนรู้ขั้นพื้นฐาน
ก่อนที่จะใช้ JDBC เพื่อใช้งานฐานข้อมูลก่อนอื่นคุณต้องมีฐานข้อมูล นี่คือ 3 ลิงก์สำหรับผู้อ่านที่จะเรียนรู้ด้วยตนเอง
MySQL ดาวน์โหลดการติดตั้งการปรับใช้และการสอนการดำเนินการโดยละเอียดแบบกราฟิก: //www.vevb.com/article/87690.htm
ขอแนะนำให้อ่านบทช่วยสอนเบื้องต้นขณะฝึกซ้อมในขณะที่ฝึกการดำเนินงานขั้นพื้นฐานเช่นแทรกอัปเดตเลือกลบ ฯลฯ และสร้างตารางที่คุณต้องการใช้ในภายหลัง
รูปต่อไปนี้คือตารางของฐานข้อมูลที่ฉันจะใช้สำหรับการสาธิตครั้งต่อไป
2. การเตรียมงาน (2): ดาวน์โหลดแพ็คเกจ JAR ที่สอดคล้องกันของฐานข้อมูลและนำเข้า
การใช้ JDBC ต้องมีการนำเข้าแพ็คเกจ JAR ที่เกี่ยวข้องในโครงการ การติดต่อระหว่างฐานข้อมูลและแพ็คเกจ JDBC สามารถอ้างถึงแพ็คเกจ JAR ชื่อคลาสไดรเวอร์และรูปแบบ URL ที่สอดคล้องกับฐานข้อมูลต่างๆ วิธีการนำเข้าภายใต้ Eclipse:
คลิกขวาที่ไอคอนโครงการเลือก "คุณสมบัติ" เลือก "เพิ่มขวดภายนอก ... " ใน "Java Bulid Path" และเลือกแพ็คเกจ JAR ที่คุณได้รับหลังจากดาวน์โหลดและคลายการบีบอัด
หากคุณทำงานบน MySQL การนำเข้าต่อไปนี้จะไม่รายงานข้อผิดพลาด:
นำเข้า com.mysql.jdbc.connection;
นอกจากนี้คุณยังต้องใช้แพ็คเกจ JDBC เพียงนำเข้าโดยตรง
นำเข้า java.sql.driverManager; นำเข้า java.sql.resultset; นำเข้า java.sql.sqlexception;
3. การดำเนินการขั้นพื้นฐานของ JDBC
เพื่อความเรียบง่ายการดำเนินการคำสั่งและพารามิเตอร์ที่เกี่ยวข้องกับฐานข้อมูลนั้นจะถูกบันทึกไว้ ผู้อ่านที่สนใจสามารถสำรวจสิ่งเหล่านี้เพื่อลดการมีเพศสัมพันธ์ระหว่างข้อมูลและการดำเนินการ
ก่อนอื่นให้ดูที่รหัสและการปฏิบัติเฉพาะ
วิธีการทั้งหมดและสมาชิกข้อมูลด้านล่างอยู่ในระดับสาธารณะ JDBCoperation
(1) กำหนดคลาสบันทึก (ไม่บังคับ)
สิ่งนี้ทำเพื่ออำนวยความสะดวกในการดำเนินการและคำจำกัดความอินเตอร์เฟสและไม่จำเป็น
นักเรียนชั้นเรียน {รหัสส่วนตัว; โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = ชื่อ;(2) การดึงการเชื่อมต่อ
จะต้องได้รับการเชื่อมต่อกับฐานข้อมูลก่อนการดำเนินการ
การเชื่อมต่อแบบคงที่ getConn () {String driver = "com.mysql.jdbc.driver"; (URL, ชื่อผู้ใช้, รหัสผ่าน); E.PrintStackTrace ();(3) แทรก
INTICE INTICE (นักเรียนที่มีส่วนร่วม) {Connection CONN = GetConn (); (2, student.getsex ()); pstmt.executeupdate ();(4) อัปเดต
การอัพเดท Int ส่วนตัว (นักเรียน) {การเชื่อมต่อ conn = getConn (); .out.println ("resutl:" + i); conn.close ();} catch (sqlexception e) {e.printstacktrace ()(5) เลือก
เลือก * จาก xxx เป็นตัวอย่าง
Integer Integer ส่วนตัว () {Connection conn = getConn (); "============================="); (int i = 1; i <= col; i ++) {system.out.print (rs.getString (i)+"/t"); ================== ");} catch (sqlexception e) {e.printstacktrace ();} return null;}(6) ลบ
INT แบบคงที่ (ชื่อสตริง) {การเชื่อมต่อ conn = getConn (); pstmt.close (); E.PrintStackTrace ();} return i;}4. ทดสอบ
ก่อนการทดสอบจะต้องเปิดบริการฐานข้อมูลที่สอดคล้องกันในระบบ คำสั่ง mysql startup ภายใต้ windows คือ net start mysql
รหัสทดสอบ
โมฆะคงที่หลัก (String args []) {jdbcoperation.getall (); .getAll ();}เอาต์พุตใน eclipse
============================= 1 Ender Male 8 2 Bean Male 6 3 Petra Fema 9 4 Peter Male 9 5 _graff Male 40 6 God Fema 255 ================================================ Bean Male 6 3 Petra Fema 9 4 Peter Male 9 5 _graff Male 40 6 God Fema 255 7 Achilles Male 14 ============================ Resutl: 1Resutl: 1 ============================ 1 Ender Male 8 2 Bean Male 7 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 =====
V. การวิเคราะห์รหัส
ในกระบวนการด้านบนของการเพิ่มการลบแก้ไขและค้นหาฐานข้อมูลสามารถพบได้เหมือนกันนั่นคือกระบวนการทั่วไป:
(1) สร้างสตริงคำสั่งการเชื่อมต่อการเชื่อมต่อและสตริงคำสั่ง SQL แบบสอบถาม;
(2) ผ่านคำสั่ง SQL Query ไปยังวัตถุการเชื่อมต่อและรับวัตถุ PreparedStatement;
(3) Execute ExecuteUpdate () หรือ ExecuteQurey () บนวัตถุ PreparedStatement เพื่อให้ได้ผลลัพธ์
(4) ปิดวัตถุที่เตรียมไว้และวัตถุการเชื่อมต่อหลังจากนั้นอีก
จะเห็นได้ว่าเมื่อใช้ JDBC ประเภทที่ติดต่อที่พบบ่อยที่สุดคือการเชื่อมต่อและการเตรียมการตั้งค่าและคลาส Resultset ในการเลือก
การเชื่อมต่อ
java.sql
การเชื่อมต่อ
อินเทอร์เฟซซุปเปอร์ทั้งหมด: wrapper
-
Interface ConnectionExtends Wrapper
การเชื่อมต่อ (เซสชัน) ไปยังฐานข้อมูลเฉพาะ ดำเนินการคำสั่ง SQL ในบริบทการเชื่อมต่อและส่งคืนผลลัพธ์
ฐานข้อมูลของวัตถุการเชื่อมต่อสามารถให้ข้อมูลที่อธิบายตาราง, ไวยากรณ์ SQL ที่รองรับ, ขั้นตอนการจัดเก็บ, ฟังก์ชั่นการเชื่อมต่อนี้และอื่น ๆ ข้อมูลนี้ได้รับโดยใช้วิธี getMetadata
ที่เตรียมไว้
java.sql
อินเทอร์เฟซ PreparedStatement
อินเทอร์เฟซสุดยอดทั้งหมด: คำสั่ง wrapper ทั้งหมดที่รู้จักกันในส่วนย่อย: callablestatement
-
คำชี้แจงส่วนต่อประสานสาธารณะ
วัตถุที่แสดงถึงคำสั่ง SQL ที่รวบรวมไว้ล่วงหน้า
คำสั่ง SQL ถูกคอมไพล์ล่วงหน้าและเก็บไว้ในวัตถุที่เตรียมไว้ คำสั่งนี้สามารถดำเนินการได้อย่างมีประสิทธิภาพหลายครั้งโดยใช้วัตถุนี้
วิธีการทั่วไป
บูลีนดำเนินการ ()
ดำเนินการคำสั่ง SQL ในวัตถุที่เตรียมไว้นี้ซึ่งอาจเป็นคำสั่ง SQL ทุกชนิด
Resultset ExecuteQuery ()
ดำเนินการสืบค้น SQL ในวัตถุที่เตรียมไว้นี้และส่งคืนวัตถุ ResultSet ที่สร้างขึ้นโดยการสืบค้น
int executeUpdate ()
ดำเนินการคำสั่ง SQL ในวัตถุที่เตรียมไว้นี้ซึ่งจะต้องเป็นคำสั่งการจัดการข้อมูล SQL (DML) เช่นคำสั่งแทรกการอัปเดตหรือลบคำสั่งหรือคำสั่ง SQL โดยไม่มีเนื้อหาส่งคืนเช่นคำสั่ง DDL
ชุดผลลัพธ์
java.sql
ชุดอินเตอร์เฟส
อินเทอร์เฟซซุปเปอร์ทั้งหมด: wrapper ทั้งหมดที่รู้จักกันในส่วนย่อย: cachedrowset, filteredrowset, jdbcrowset, JoinRowset, Rowset, syncresolver, Webrowset, Webrowset
-
อินเทอร์เฟซ ResusterseTextends wrapper
ตารางข้อมูลที่แสดงถึงชุดผลลัพธ์ฐานข้อมูลมักจะสร้างขึ้นโดยการดำเนินการค้นหาคำสั่งการสืบค้นฐานข้อมูล
6. คิดถึงปัญหา
1. การดำเนินการ SQL แต่ละครั้งต้องมีการสร้างและปิดการเชื่อมต่อซึ่งจะใช้ทรัพยากรมากเกินไปอย่างหลีกเลี่ยงไม่ได้
การวิเคราะห์: การรวมการเชื่อมต่อสามารถใช้เพื่อดำเนินการบำรุงรักษาการเชื่อมต่อแบบครบวงจรโดยไม่ต้องสร้างและปิดทุกครั้ง อันที่จริงนี่คือสิ่งที่เครื่องมือมากมายสำหรับการห่อหุ้ม JDBC
2. ฉันควรทำอย่างไรถ้ารูปแบบของข้อมูลขาเข้าแตกต่างจากนิยามฐานข้อมูลในรหัส Java? ตัวอย่างเช่นกำหนดวัตถุสตริง Java ให้กับแอตทริบิวต์ TinyInt ของฐานข้อมูล
การวิเคราะห์: เมื่อดำเนินการคำสั่ง SQL ฐานข้อมูลจะพยายามแปลง จากการทดลองของฉันหากคุณผ่านแอตทริบิวต์อายุของ TinyInt ด้วยตัวอักษรบริสุทธิ์โดยใช้วัตถุสตริงมันจะถูกแปลงเป็น 0 กฎการแปลงเฉพาะควรเกี่ยวข้องกับฐานข้อมูล
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้