เนื้อหาหลัก:
1. JDBC ฐานข้อมูลการเชื่อมต่อ (แก้ไข) ขั้นตอน (ส่วนใหญ่มีหกขั้นตอน)
1. ลงทะเบียนไดรเวอร์: class.forname ("com.mysql.jdbc.driver"); แสดงโหลดลงใน JVM
2. รับการเชื่อมต่อ: (1) param1: URL เพื่อเชื่อมต่อกับฐานข้อมูล -----》 string url = "jdbc: mysql: // localhost: 3306/test?"+ "useunicode = true & riginateencoding = utf8" //
param2: ชื่อผู้ใช้เพื่อเชื่อมต่อกับฐานข้อมูล-》 string user = "H4";
param3: รหัสผ่านเพื่อเชื่อมต่อกับฐานข้อมูล ----》 สตริงผ่าน = "111";
Connection conn = drivermanager.getConnection (URL, ผู้ใช้, ผ่าน); // วิธีการภายใต้ DriverManager: getConnection (url สตริง, ชื่อผู้ใช้สตริง, รหัสผ่านสตริง)
(2) ถัดไปเราวิเคราะห์ URL: "JDBC (โปรโตคอลนี้เริ่มต้นด้วย JDBC): MySQL (นี่คือโปรโตคอลย่อย, ชื่อระบบการจัดการฐานข้อมูล): // localhost (ที่อยู่แหล่งข้อมูล): 3306 (พอร์ตเป้าหมาย)/ทดสอบ
"useUnicode = true & characterencoding = utf8"; สิ่งนี้ถูกเพิ่มเข้ามาเพื่อป้องกันรหัสที่อ่านไม่ออกและมีการระบุให้ใช้ชุดอักขระ Unicode และแก้ไขโดยใช้ UTF-8
3. สร้างวัตถุคำสั่งคำสั่ง (สามวิธีหลัก): คำสั่ง stmt = conn.createstatement (); // วิธีการภายใต้อินเตอร์เฟสการเชื่อมต่อ: คำสั่ง createStatement ()
PreparedStatement PSTMT = Conn.PreparedStatement ();
callablestatement cstmt = conn.preprepall ("{โทร demosp (?,?)}");
มาวิเคราะห์กันดีกว่า: (1) ความแตกต่างระหว่างคำสั่งและวัตถุที่เตรียมไว้ซึ่งสามารถตั้งค่าพารามิเตอร์แบบสอบถามแบบไดนามิก
(2) วิธีการสำหรับการตั้งค่าพารามิเตอร์ PrepectStatement.setxxxx (ParameterIndex, ค่า) หากประเภทพารามิเตอร์ฐานข้อมูลคือ VARCHAR จะใช้ setString หากประเภทพารามิเตอร์เป็นจำนวนเต็มให้ใช้ setint
(3) callablestatement.setxxxx (พารามิเตอร์ Inde, value) // ค่าตั้งค่าในลำดับของพารามิเตอร์
callablestatement.setxxxx (parameterName, ค่า) // ตั้งค่าตามชื่อของพารามิเตอร์ ชื่อนี้เป็นชื่อของพารามิเตอร์ที่เป็นทางการเมื่อกำหนดขั้นตอนที่เก็บไว้
(4) callablestatement.registeroutparameter วิธีใช้เพื่อประกาศพารามิเตอร์ของประเภทเอาต์พุตของขั้นตอนที่เก็บไว้เพื่อรับค่าเอาต์พุตของขั้นตอนที่เก็บไว้
4. ดำเนินการคำสั่ง SQL: ResultSet RS = STMT.ExecuteQuery (SQL); ยกเว้นคำสั่ง Query, ExecuteQuery (); ทุกอย่างอื่นจะถูกดำเนินการ ();
วิธีการภายใต้คำสั่งอินเทอร์เฟซ:
บูลีนดำเนินการ (สตริง SQL): เรียกใช้คำสั่ง SQL, จริงถ้าค่าส่งคืนเป็นชุดผลลัพธ์มิฉะนั้นเท็จ
Resultset ExecuteQuery (String SQL): ดำเนินการคำสั่ง SQL, ค่าส่งคืนคือ Resultset
int executeUpdate (สตริง SQL): ดำเนินการคำสั่ง SQL, ค่าส่งคืนคือจำนวนแถวที่ได้รับผลกระทบ
5. ชุดผลลัพธ์กระบวนการ: วิธี getXXXX ของวัตถุ ResultSet ขึ้นอยู่กับประเภทของฟิลด์ในตารางในฐานข้อมูล ตัวอย่างเช่น: varchar2 สอดคล้องกับ getString หากเป็นจำนวนเต็มวิธีที่สอดคล้องกันคือ getint/getLong
ในขณะที่ (rs.next ()) {rs.getint (columnindex); // รับค่าของฟิลด์ผ่านหมายเลขคอลัมน์ rs.getString (ชื่อคอลัมน์); // รับค่าของฟิลด์ผ่านชื่อคอลัมน์วิธีการทั่วไปภายใต้อินเทอร์เฟซ Resultset: ก่อนหน้า (); ย้ายเคอร์เซอร์ไปที่ระเบียนแรก (ด้านหน้า) ในชุดผลลัพธ์หลังสมอลต (); ย้ายเคอร์เซอร์ไปยังระเบียนสุดท้าย (หลังจาก) ในผลลัพธ์) สัมบูรณ์ (intcolumn): เลื่อนเคอร์เซอร์ไปยังแถวที่ระบุเมื่อเทียบกับแถวแรกและจำนวนลบนั้นสัมพันธ์กับบันทึกล่าสุดก่อนหน้า (): เลื่อนเคอร์เซอร์ขึ้นหนึ่งแถวถัดไป () ได้รับการแก้ไข6. ปิดทรัพยากร: หลังจากการดำเนินการเสร็จสมบูรณ์คุณต้องปิด JDBC เพื่อปล่อยทรัพยากร JDBC แต่คำสั่งควรเป็นสิ่งที่ตรงกันข้ามเมื่อคุณกำหนดวัตถุเช่นเดียวกับการปิดประตูปิดจากภายในก่อนและปิดด้านนอก
ตัวอย่างต่อไปนี้:
if (rs! = null) {// 1 ปิดชุดผลลัพธ์ลอง {rs.close (); } catch (sqlexception e) {e.printstacktrace (); }} if (stmt! = null) {// 2 ปิดวัตถุที่ประกาศลอง {stmt.close (); } catch (sqlexception e) {e.printstacktrace (); }} if (conn! = null) {// 3 ปิดการเชื่อมต่อ (อย่าลืมปิด 1.2 ก่อนหน้าก่อนจากนั้นปิดการเชื่อมต่อ) ลอง {conn.close (); } catch (exception e) {e.printstacktrace (); -2. ด้านล่างเป็นตัวอย่างข้อมูลการสืบค้นที่ง่าย (รายละเอียด)
แพ็คเกจ javacore1; // นี่คือชื่อแพ็คเกจที่คุณสร้างขึ้น นำเข้า Java.SQL.CALLABLESTATEMENT; นำเข้า Java.SQL.Connection; นำเข้า Java.SQL.DriverManager; นำเข้า Java.SQL.PreparedStatement; นำเข้า Java.SQL.ResultSet; // ห้าทางด้านซ้ายคือชื่อแพ็คเกจที่คุณต้องการนำเข้าเมื่อเขียนโปรแกรม อย่าลืมเป็นแพ็คเกจภายใต้ java.sql นำเข้า java.sql.sqlexception; นำเข้า java.sql.statement; คลาสสาธารณะ JDBC {// กำหนดโมฆะระดับสาธารณะแบบคงที่ระดับสาธารณะ (สตริง [] args) {// วิธีหลักลอง {สตริงไดร์เวอร์ = "com.mysql.jdbc.driver"; // 1. กำหนดไดรเวอร์ชื่อไดรเวอร์เป็นไดรเวอร์เป็น com.mysql.jdbc.driver url url = "jdbc: mysql: // localhost: 3306/ทดสอบ?" // 2. กำหนด URL; JDBC เป็นโปรโตคอล MySQL เป็นย่อยย่อย: แสดงถึงชื่อการจัดการระบบฐานข้อมูล LocalHost: 3306 เป็นที่อยู่และพอร์ตเป้าหมายของแหล่งฐานข้อมูลของคุณ การทดสอบเป็นที่ตั้งของตารางที่ฉันสร้างขึ้นเองและคุณใช้คุณเป็นมาตรฐาน + "useUnicode = true & characterencoding = utf8"; // ป้องกันรหัสที่อ่านไม่ออก; useUnicode = วิธีการจริงโดยใช้ชุดอักขระ Unicode; ตัวละคร = UTF8 หมายถึงการใช้ UTF-8 สำหรับการแก้ไข String user = "H4"; // 3. กำหนดชื่อผู้ใช้และเขียนผู้ใช้ที่คุณต้องการเชื่อมต่อ String pass = "111"; // 4. รหัสผ่านผู้ใช้ String querySql = "เลือก * จากพนักงาน"; // 5. ชื่อตารางที่คุณต้องการค้นหา class.forname (ไดรเวอร์); // 6. ลงทะเบียนไดรเวอร์และใช้ class.froname () ในชั้นเรียนด้านล่างแพ็คเกจ java.lang; ไดรเวอร์ที่นี่คือไดรเวอร์ที่กำหนดไว้ใน 1 หรือ class.forName ("com.mysql.jdbc.driver"); Connection conn = drivermanager.getConnection (URL, ผู้ใช้, ผ่าน); // 7. รับการเชื่อมต่อฐานข้อมูลและใช้ getConnectin (url สตริง, ชื่อผู้ใช้สตริง, รหัสผ่านสตริง) ของ DriverManager ใน java.sql เพื่อให้เสร็จสมบูรณ์ // URL, ผู้ใช้, ผ่านในวงเล็บคือ 2, 3 และ 4 ขั้นตอนด้านบน; คำสั่ง stmt = conn.createstatement (); // 8. สร้างวัตถุคำสั่งเพื่อเรียกใช้คำสั่ง SQL: ส่วนใหญ่มีสามอินสแตนซ์ของคำสั่ง PrepectStatement และ callablestatement เพื่อนำไปใช้ // วิธีการดำเนินการทั้งสามคือ: คำสั่ง stmt = con.createstatement (); // PreparedStatement PSTMT = Conn.PrepareStatement (SQL); // callablestatement cstmt = conn.preparecall ("{โทร demosp (?,?)}"); resultset rs = stmt.executeQuery (querySQL); // 9. ดำเนินการ SQL และส่งคืนไปยังจุดสิ้นสุด ResultSet ExecuteQuery (String SQLString): ใช้เพื่อส่งคืนวัตถุชุดผลลัพธ์ (ResultSet) ในขณะที่ (rs.next ()) {//10.transfer ชุดผลลัพธ์ system.out.println ("หมายเลขบุคลากร:"+rs.getString ("Employee_id")+"เงินเดือน:"+rs.getString ("เงินเดือน")+"ชื่อ:" rs.getString ("last_name"); ! = null) {// 11.close ชุดระเบียนลอง {rs.close (); } catch (sqlexception e) {e.printstacktrace (); }} if (stmt! = null) {// 12.close วัตถุที่ประกาศลอง {stmt.close (); } catch (sqlexception e) {e.printstacktrace (); }} if (stmt! = null) {// 12.close วัตถุที่ประกาศลอง {stmt.close (); } catch (sqlexception e) {e.printstacktrace (); }} if (conn! = null) {// 13 ปิดการเชื่อมต่อ (อย่าลืมปิด 11.12 ก่อนหน้าก่อนจากนั้นปิดการเชื่อมต่อเช่นเดียวกับการปิดประตูปิดด้านในก่อนและในที่สุดก็ปิดด้านนอกสุด) ลอง {conn.close (); } catch (sqlexception e) {e.printstacktrace (); }}} catch (exception e) {e.printstacktrace (); -3. เพื่อให้เข้าใจง่ายยิ่งขึ้นเราห่อหุ้มการเชื่อมต่อฐานข้อมูลและการเชื่อมต่อการปล่อยในวิธีการเพื่ออำนวยความสะดวกในการทำงานที่ดีขึ้นในภายหลัง
แพ็คเกจ javacore1; นำเข้า java.sql.connection; นำเข้า java.sql.driverManager; คลาสสาธารณะ JDBC {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {การเชื่อมต่อ conn = getConnection ("H4", "111"); // รับฐานข้อมูล การเชื่อมต่อ/*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - - - String Pass) {Connection conn = null; // ประกาศไดรเวอร์สตริงวัตถุเชื่อมต่อ = "com.mysql.jdbc.driver"; // ชื่อคลาสไดรเวอร์ url url = "jdbc: mysql: // localhost: 3306/ทดสอบ?" // ฐานข้อมูล URL + "useUnicode = true & characterencoding = utf8"; // ป้องกันไม่ให้ลองอ่านไม่ออก {class.forname (ไดรเวอร์); // register (โหลด) ไดรเวอร์ conn = driverManager.getConnection (url, ผู้ใช้, ผ่าน); // รับการเชื่อมต่อฐานข้อมูล} } return conn; } // ปล่อยฐานข้อมูลการเชื่อมต่อสาธารณะโมฆะคงที่ releaseconnection (การเชื่อมต่อ Conn) {ลอง {ถ้า (conn! = null) conn.close (); } catch (exception e) {e.printstacktrace (); -4. ใช้ฟังก์ชั่นฐานข้อมูลการประมวลผลสิบเอ็ดฟังก์ชั่นเช่นการสืบค้นการแทรกการลบและการอัปเดต
1. ข้อมูลสอบถามข้อมูล
แพ็คเกจ javacore1; นำเข้า java.sql.connection; นำเข้า java.sql.driverManager นำเข้า java.sql.resultset; นำเข้า java.sql.sqlexception; นำเข้า Java.sql.statement รับคิวรีการเชื่อมต่อฐานข้อมูล (Conn); // เมธอดชื่อเรียกการเชื่อมต่อฐานข้อมูล releaseConnection (conn); // การเชื่อมต่อฐานข้อมูลรีลีส} // ข้อมูลการสืบค้น, กำหนดวิธีการสืบค้นแบบสอบถามสาธารณะแบบสแตติกแบบสแตติกแบบสแตติกแบบสแตติกแบบสแตติกแบบสแตติก ลอง {คำสั่ง stmt = conn.createstatement (); // คุณสามารถใช้ PreparedStatement เพื่อทำ ResultSet rs = stmt.executeQuery (SQL); // ดำเนินการคำสั่ง SQL และกลับมาสิ้นสุดในขณะที่ (rs.Next ()) {// ถ่ายโอนชุดผลลัพธ์และไปที่ระบบบรรทัดถัดไป } if (rs! = null) {ลอง {rs.close (); } catch (sqlexception e) {e.printstacktrace (); }} if (stmt! = null) {ลอง {stmt.close (); } catch (sqlexception e) {e.printstacktrace (); }} if (conn! = null) {ลอง {conn.close (); } catch (sqlexception e) {e.printstacktrace (); }}} catch (exception e) {e.printstacktrace (); }} // ฐานข้อมูลการเชื่อมต่อสาธารณะการเชื่อมต่อแบบคงที่ getConnection (ผู้ใช้สตริง, สตริงผ่าน) {การเชื่อมต่อ conn = null; // ประกาศไดรเวอร์สตริงวัตถุเชื่อมต่อ = "com.mysql.jdbc.driver"; // ชื่อคลาสไดรเวอร์ url = "jdbc: mysql: // localhost: 3306/ทดสอบ?" // ฐานข้อมูล URL + "useUnicode = true & characterencoding = utf8"; // ป้องกันไม่ให้ลองอ่านไม่ออก {class.forname (ไดรเวอร์); // register (โหลด) ไดรเวอร์ conn = driverManager.getConnection (url, ผู้ใช้, ผ่าน); // รับการเชื่อมต่อฐานข้อมูล} } return conn; } // การเปิดตัวฐานข้อมูลการเชื่อมต่อสาธารณะโมฆะคงที่ releaseconnection (การเชื่อมต่อ Conn) {ลอง {ถ้า (conn! = null) conn.close (); } catch (exception e) {e.printstacktrace (); - // สอบถามข้อมูลและผลลัพธ์จะแสดงตามลำดับย้อนกลับแพ็คเกจลำดับย้อนกลับ javacore1; นำเข้า java.sql.connection; นำเข้า java.sql.driverManager; นำเข้า java.sql.resultset; นำเข้า java.sql.sqlexception; การเชื่อมต่อ conn = getConnection ("H4", "111"); // รับแบบสอบถามการเชื่อมต่อฐานข้อมูล (Conn); // ชื่อเมธอดเรียกการเชื่อมต่อฐานข้อมูล releaseconnection (conn); // ปล่อยการเชื่อมต่อฐานข้อมูล} // การสืบค้นข้อมูลกำหนดวิธีการสืบค้นแบบสอบถามสาธารณะแบบสแตติกแบบสแตติกแบบสแตติกแบบสแตติก ลอง {คำสั่ง stmt = conn.createstatement (); // คุณสามารถใช้ PreparedStatement เพื่อทำ ResultSet RS = STMT.ExecuteQuery (SQL); // ดำเนินการคำสั่ง SQL และส่งคืน Rs.AfterLast (); // ข้ามไปยังบรรทัดสุดท้ายก่อนในขณะที่ (rs.previous ()) {// โอนผลลัพธ์ที่ตั้งค่าและขึ้นบรรทัด system.out.println ("หมายเลขบุคลากร:"+rs.getString ("Employee_id")+"เงินเดือน:"+rs.getString ("เงินเดือน"); } if (rs! = null) {ลอง {rs.close (); } catch (sqlexception e) {e.printstacktrace (); }} if (stmt! = null) {ลอง {stmt.close (); } catch (sqlexception e) {e.printstacktrace (); }} if (conn! = null) {ลอง {conn.close (); } catch (sqlexception e) {e.printstacktrace (); }}}} catch (Exception E) {E.printStackTrace (); }} // ฐานข้อมูลการเชื่อมต่อสาธารณะการเชื่อมต่อแบบคงที่ getConnection (ผู้ใช้สตริง, สตริงผ่าน) {การเชื่อมต่อ conn = null; // ประกาศไดรเวอร์สตริงวัตถุเชื่อมต่อ = "com.mysql.jdbc.driver"; // ชื่อคลาสไดรเวอร์ url = "jdbc: mysql: // localhost: 3306/ทดสอบ?" // ฐานข้อมูล URL + "useUnicode = true & characterencoding = utf8"; // ป้องกันไม่ให้ลองอ่านไม่ออก {class.forname (ไดรเวอร์); // register (โหลด) ไดรเวอร์ conn = driverManager.getConnection (url, ผู้ใช้, ผ่าน); // รับการเชื่อมต่อฐานข้อมูล} } return conn; } // การเปิดตัวฐานข้อมูลการเชื่อมต่อสาธารณะโมฆะคงที่ releaseconnection (การเชื่อมต่อ Conn) {ลอง {ถ้า (conn! = null) conn.close (); } catch (exception e) {e.printstacktrace (); -2. แทรกข้อมูล
แพ็คเกจ javacore1; นำเข้า java.sql.connection; นำเข้า java.sql.driverManager นำเข้า java.sql.sqlexception; นำเข้า java.sql.Statement; ชั้นเรียนสาธารณะ // รับแทรกการเชื่อมต่อฐานข้อมูล (Conn); // เมธอดชื่อเรียกการเชื่อมต่อฐานข้อมูล releaseconnection (Conn); // การเชื่อมต่อฐานข้อมูลรีลีส} // แทรกข้อมูลโมฆะสาธารณะคงที่สาธารณะ (Connection Conn) {ลอง {string sql = "แทรกลงในพนักงาน (พนักงาน _id, last_name, เงินเดือน, แผนก userid, userid)" + "('100010', 'xiaogou', '7000', '004', '9') // คำสั่ง SQL สำหรับการแทรกคำสั่งข้อมูล stmt1 = conn.createstatement (); // สร้างวัตถุคำสั่งสำหรับการดำเนินการคำสั่ง SQL แบบคงที่ int count = stmt1.executeUpdate (SQL); // คำสั่ง SQL สำหรับการดำเนินการแทรกและส่งคืนจำนวนของข้อมูลที่แทรกเข้าด้วยกัน println ("แทรก" + count + "data"); // เอาต์พุตผลลัพธ์ของการดำเนินการแทรก conn.close (); // ปิดการเชื่อมต่อฐานข้อมูล} catch (sqlexception e) {e.printstacktrace (); }} // ฐานข้อมูลการเชื่อมต่อสาธารณะการเชื่อมต่อแบบคงที่ getConnection (ผู้ใช้สตริง, สตริงผ่าน) {การเชื่อมต่อ conn = null; // ประกาศไดรเวอร์สตริงวัตถุเชื่อมต่อ = "com.mysql.jdbc.driver"; // ชื่อคลาสไดรเวอร์ url = "jdbc: mysql: // localhost: 3306/ทดสอบ?" // ฐานข้อมูล URL + "useUnicode = true & characterencoding = utf8"; // ป้องกันไม่ให้ลองใช้ {class.forname (ไดรเวอร์); // register (โหลด) ไดรเวอร์ conn = drivermanager.getConnection (url, ผู้ใช้, ผ่าน); // รับการเชื่อมต่อฐานข้อมูล} } return conn; } // ปล่อยฐานข้อมูลการเชื่อมต่อสาธารณะโมฆะคงที่ releaseconnection (การเชื่อมต่อ Conn) {ลอง {ถ้า (conn! = null) conn.close (); } catch (exception e) {e.printstacktrace (); -3. ลบข้อมูล
แพ็คเกจ javacore1; นำเข้า java.sql.connection; นำเข้า java.sql.driverManager นำเข้า java.sql.sqlexception; นำเข้า java.sql.Statement; ชั้นเรียนสาธารณะลบ {โมฆะคงที่สาธารณะ // รับการเชื่อมต่อฐานข้อมูล DELETE (Conn); // เมธอดชื่อเรียกการเชื่อมต่อฐานข้อมูล; releaseconnection (Conn); // การเชื่อมต่อฐานข้อมูลรีลีส} // ลบข้อมูลสาธารณะคงที่เป็นโมฆะคงที่การลบ (Connection Conn) {String SQL = "ลบจากพนักงานที่พนักงาน _ID = 100009"; ลอง {คำสั่ง stmt = conn.createStatement (); // หรือใช้วิธีการเตรียมการ stmt.executeUpdate (SQL); // ดำเนินการคำสั่ง SQL ถ้า (stmt! = null) {ลอง {stmt.close (); } catch (sqlexception e) {e.printstacktrace (); }}} catch (sqlexception e) {e.printstacktrace (); }}} // ฐานข้อมูลการเชื่อมต่อสาธารณะการเชื่อมต่อแบบคงที่ getConnection (ผู้ใช้สตริง, สตริงส่งผ่าน) {การเชื่อมต่อ conn = null; // ประกาศไดรเวอร์สตริงวัตถุเชื่อมต่อ = "com.mysql.jdbc.driver"; // คลาสไดรเวอร์คลาสสตริง url = "jdbc: mysql: // localhost: 3306/test? // ฐานข้อมูล URL + "useUnicode = true & characterencoding = utf8"; // ป้องกันไม่ให้ลองอ่านไม่ออก {class.forname (ไดรเวอร์); // register (โหลด) ไดรเวอร์ conn = driverManager.getConnection (url, ผู้ใช้, ผ่าน); // รับการเชื่อมต่อฐานข้อมูล} } return conn; } // ปล่อยฐานข้อมูลการเชื่อมต่อสาธารณะโมฆะคงที่ releaseconnection (การเชื่อมต่อ Conn) {ลอง {ถ้า (conn! = null) conn.close (); } catch (exception e) {e.printstacktrace (); -4. อัปเดตข้อมูล
แพ็คเกจ javacore1; นำเข้า java.sql.connection; นำเข้า java.sql.driverManager นำเข้า java.sql.sqlexception; นำเข้า java.sql.Statement; การอัปเดตชั้นเรียนสาธารณะ // รับการอัปเดตการเชื่อมต่อฐานข้อมูล (Conn); // เมธอดการเรียกใช้ฐานข้อมูลการเชื่อมต่อฐานข้อมูล releaseConnection (conn); // การเชื่อมต่อฐานข้อมูลรีลีส} // อัปเดตข้อมูลโมฆะสาธารณะคงที่สาธารณะ (การเชื่อมต่อ Conn) {String SQL = "อัพเดทพนักงานที่ตั้งค่าเงินเดือน = 8000 โดยพนักงาน _id = 100005"; ลอง {คำสั่ง stmt1 = conn.createStatement (); // หรือใช้วิธีการเตรียมการ stmt1.executeupdate (sql); // ดำเนินการคำสั่ง SQL ถ้า (stmt1! = null) {ลอง {stmt1.close (); } catch (sqlexception e) {e.printstacktrace (); }}} catch (sqlexception e) {e.printstacktrace (); }} // ฐานข้อมูลการเชื่อมต่อสาธารณะการเชื่อมต่อแบบคงที่ getConnection (ผู้ใช้สตริง, สตริงผ่าน) {การเชื่อมต่อ conn = null; // ประกาศไดรเวอร์สตริงวัตถุเชื่อมต่อ = "com.mysql.jdbc.driver"; // ชื่อคลาสไดรเวอร์ url = "jdbc: mysql: // localhost: 3306/ทดสอบ?" // ฐานข้อมูล URL + "useUnicode = true & characterencoding = utf8"; // ป้องกันไม่ให้ลองอ่านไม่ออก {class.forname (ไดรเวอร์); // register (โหลด) ไดรเวอร์ conn = driverManager.getConnection (url, ผู้ใช้, ผ่าน); // รับการเชื่อมต่อฐานข้อมูล} } return conn; } // ปล่อยฐานข้อมูลการเชื่อมต่อสาธารณะโมฆะคงที่ releaseconnection (การเชื่อมต่อ Conn) {ลอง {ถ้า (conn! = null) conn.close (); } catch (exception e) {e.printstacktrace (); -5. การถ่ายโอน (ธุรกรรม)
JDBC จัดการการทำธุรกรรมผ่านการเชื่อมต่อแบบปิดอัตโนมัติ:
Connection.setAutocommit (เท็จ);
ส่งธุรกรรม:
Connection.Commit ();
การย้อนกลับธุรกรรมย้อนกลับส่วน:
Connection.rollback (SavePoint);
ย้อนกลับทั้งหมด:
Connection.rollback ();
แพ็คเกจ javacore1; นำเข้า java.sql.connection; นำเข้า java.sql.driverManager นำเข้า java.sql.statement; transcash ระดับสาธารณะ {โมฆะคงที่สาธารณะ (สตริง [] args) {Connection conn = getConnection ("H3", "111111"); // ชื่อวิธีเรียกการเชื่อมต่อฐานข้อมูล releaseconnection (conn); // ปล่อยการเชื่อมต่อฐานข้อมูล} // การถ่ายโอน (การแปลงข้อมูล) (ข้อมูลต้นฉบับคือ 100 และ 500 แต่หลังจากใช้ฟังก์ชั่นนี้มันจะกลายเป็น 500 และ 100 ในความเป็นจริง ลอง {conn.setAutocommit (เท็จ); // ปิดสตริงการส่งอัตโนมัติ sql = "อัพเดทพนักงานตั้งค่าเงินเดือน = 500 โดยที่พนักงาน _id = 100001"; stmt = conn.createstatement (); stmt.executeUpdate (SQL); SQL = "อัพเดทพนักงานตั้งค่าเงินเดือน = 100 โดยที่พนักงาน _id = 100002"; stmt.executeUpdate (SQL); // ดำเนินการคำสั่ง SQL, เงินเดือนสองด้านข้างต้นจะถูกแลกเปลี่ยน // int i = 1/0; ถ้าเป็นเช่นนั้นงานจะไม่เสร็จสมบูรณ์เพราะนี่เป็นสิ่งที่สมบูรณ์และหากมีความล้มเหลวเล็กน้อยมันจะล้มเหลวทั้งหมด conn.commit (); // comment transaction} catch (exception e) {e.printstacktrace (); } ในที่สุด {ลอง {ถ้า (stmt! = null) {stmt.close (); } catch (exception e) {e.printstacktrace (); }}} // ฐานข้อมูลการเชื่อมต่อสาธารณะการเชื่อมต่อแบบคงที่ getConnection (ผู้ใช้สตริง, สตริงส่งผ่าน) {การเชื่อมต่อ conn = null; // ประกาศไดรเวอร์สตริงวัตถุเชื่อมต่อ = "com.mysql.jdbc.driver"; // คลาสไดรเวอร์คลาสสตริง url = "jdbc: mysql: // localhost: 3306/test? // ฐานข้อมูล URL + "useUnicode = true & characterencoding = utf8"; // ป้องกันไม่ให้ลองอ่านไม่ออก {class.forname (ไดรเวอร์); // register (โหลด) ไดรเวอร์ conn = driverManager.getConnection (url, ผู้ใช้, ผ่าน); // รับการเชื่อมต่อฐานข้อมูล} } return conn; } // การเปิดตัวฐานข้อมูลการเชื่อมต่อสาธารณะโมฆะคงที่ releaseconnection (การเชื่อมต่อ Conn) {ลอง {ถ้า (conn! = null) conn.close (); } catch (exception e) {e.printstacktrace (); -6. ค้นหาขั้นตอนที่เก็บไว้โดยไม่มีพารามิเตอร์
แพ็คเกจ javacore1; นำเข้า java.sql.Callablestatement; นำเข้า java.sql.connection; นำเข้า java.sql.driverManager; นำเข้า java.sql.sqlexception; // รับการเชื่อมต่อฐานข้อมูล ExecProc (conn); // เมธอดการโทรการเชื่อมต่อฐานข้อมูลการเชื่อมต่อฐานข้อมูล releaseconnection (conn); // การเชื่อมต่อฐานข้อมูลรีลีส} // การโทรขั้นตอนที่ไม่ได้รับการจัดเก็บ โมฆะสาธารณะคงที่ execproc (Connection Conn) {String sql = "{call raisesalary}"; ลอง {callablestatement cstmt = conn.preparecall (SQL); cstmt.executeUpdate (); } catch (sqlexception e) {e.printstacktrace (); }} // ฐานข้อมูลการเชื่อมต่อสาธารณะการเชื่อมต่อแบบคงที่ getConnection (ผู้ใช้สตริง, สตริงผ่าน) {การเชื่อมต่อ conn = null; // ประกาศไดรเวอร์สตริงวัตถุเชื่อมต่อ = "com.mysql.jdbc.driver"; // ชื่อคลาสไดรเวอร์ url = "jdbc: mysql: // localhost: 3306/ทดสอบ?" // ฐานข้อมูล URL + "useUnicode = true & characterencoding = utf8"; // ป้องกันไม่ให้ลองอ่านไม่ออก {class.forname (ไดรเวอร์); // register (โหลด) ไดรเวอร์ conn = driverManager.getConnection (url, ผู้ใช้, ผ่าน); // รับการเชื่อมต่อฐานข้อมูล} } return conn; } // การเปิดตัวฐานข้อมูลการเชื่อมต่อสาธารณะโมฆะคงที่ releaseconnection (การเชื่อมต่อ Conn) {ลอง {ถ้า (conn! = null) conn.close (); } catch (exception e) {e.printstacktrace (); -7. ค้นหาขั้นตอนที่เก็บไว้ด้วยพารามิเตอร์
แพ็คเกจ javacore1; นำเข้า java.sql.Callablestatement; นำเข้า java.sql.connection; นำเข้า java.sql.driverManager; นำเข้า java.sql.types; คลาสสาธารณะ getMulti // รับการเชื่อมต่อฐานข้อมูล int cnt = getMulti (conn); // ค้นหาขั้นตอนที่เก็บไว้; System.out.println ("หมายเลขคน:" + cnt); releaseconnection (Conn); // การเชื่อมต่อฐานข้อมูลรีลีส} // กระบวนการค้นหามีพารามิเตอร์สาธารณะคงที่ int getMulti (การเชื่อมต่อ Conn) {int dept_id = 100001; int cnt = 0; String sql = "{call calc_emp_count (?,?)}"; ลอง {callablestatement cstmt = conn.preparecall (sql); // เริ่มต้นวัตถุคำสั่ง cstmt.setint (1, dept_id); // callablestatement.setxxx (พารามิเตอร์, ค่า) หรือ (จำนวน, ค่า) // cstmt.registeroutparameter (2, types.integer); // ประกาศพารามิเตอร์เอาต์พุต cstmt.executeupdate (); // ดำเนินการคำสั่ง sql cnt = cstmt.getint (2); // รับผลลัพธ์ถ้า (cstmt! = null) E.PrintStackTrace (); } return cnt; } // ฐานข้อมูลการเชื่อมต่อสาธารณะการเชื่อมต่อแบบคงที่ getConnection (ผู้ใช้สตริง, สตริงผ่าน) {การเชื่อมต่อ conn = null; // ประกาศไดรเวอร์สตริงวัตถุการเชื่อมต่อ = "com.mysql.jdbc.driver"; // ชื่อคลาสไดรเวอร์ url = "jdbc: mysql: // localhost: 3306/test?" // ฐานข้อมูล URL + "useUnicode = true & characterencoding = utf8"; // ป้องกันไม่ให้ลองอ่านไม่ออก {class.forname (ไดรเวอร์); // register (โหลด) ไดรเวอร์ conn = driverManager.getConnection (url, ผู้ใช้, ผ่าน); // รับการเชื่อมต่อฐานข้อมูล} } return conn; } // การเปิดตัวฐานข้อมูลการเชื่อมต่อสาธารณะโมฆะคงที่ releaseconnection (การเชื่อมต่อ Conn) {ลอง {ถ้า (conn! = null) conn.close (); } catch (exception e) {e.printstacktrace (); -8. การประมวลผลธรรมดา
แพ็คเกจ javacore1; นำเข้า java.sql.connection; นำเข้า java.sql.date นำเข้า java.sql.drivermanager; นำเข้า java.sql.preparedStatement; นำเข้า java.sql.sqlexception; "111111"); // รับการเชื่อมต่อฐานข้อมูล planInsert (Conn); // เมธอดชื่อเรียกการเชื่อมต่อฐานข้อมูล releaseconnection (Conn); // การเชื่อมต่อฐานข้อมูลรีลีส} // การประมวลผลทั่วไปของโมฆะแบบคงที่สาธารณะ planInsert (การเชื่อมต่อ Conn) {ลอง {String SQL = "แทรกลงใน test_user1 (userId, ชื่อผู้ใช้, การโหลดเวลา)" + "(?,?,?)"; // คำสั่ง SQL เพื่อแทรกข้อมูล PreparedStatement PSTMT = Conn.prepareStatement (SQL); Long StartTime = System.currentTimeMillis (); สำหรับ (int i = 0; i <1000; i ++) {pstmt.setLong (1, i); pstmt.setstring (2, "ผู้ใช้"+i); PSTMT.SetDate (3, วันที่ใหม่ (System.CurrentTimeMillis ())); pstmt.executeUpdate (); } system.out.println ("เวลาทั้งหมดที่ใช้:"+(system.currenttimeMillis () - เริ่มต้น)); pstmt.close (); // ปิดการเชื่อมต่อฐานข้อมูล} catch (sqlexception e) {e.printstacktrace (); }} // ฐานข้อมูลการเชื่อมต่อสาธารณะการเชื่อมต่อแบบคงที่ getConnection (ผู้ใช้สตริง, สตริงผ่าน) {การเชื่อมต่อ conn = null; // ประกาศไดรเวอร์สตริงวัตถุเชื่อมต่อ = "com.mysql.jdbc.driver"; // ชื่อคลาสไดรเวอร์ url = "jdbc: mysql: // localhost: 3306/ทดสอบ?" // ฐานข้อมูล URL + "useUnicode = true & characterencoding = utf8"; // ป้องกันไม่ให้ลองอ่านไม่ออก {class.forname (ไดรเวอร์); // register (โหลด) ไดรเวอร์ conn = driverManager.getConnection (url, ผู้ใช้, ผ่าน); // รับการเชื่อมต่อฐานข้อมูล} } return conn; } // การเปิดตัวฐานข้อมูลการเชื่อมต่อสาธารณะโมฆะคงที่ releaseconnection (การเชื่อมต่อ Conn) {ลอง {ถ้า (conn! = null) conn.close (); } catch (exception e) {e.printstacktrace (); -9. การประมวลผลแบบแบทช์
รับรูปแบบการทำธุรกรรม JDBC ดั้งเดิม:
บูลีน currenttransactionModle = con.getautocommit ();
ตั้งค่าเป็นโหมดธุรกรรม (ปิดการกระทำอัตโนมัติ):
Con.setAutocommit (เท็จ);
คำสั่ง stm = con.createstatement ();
คำสั่ง SQL ที่ต่างกันสามแบบ:
String sql1 = "ลบจากผู้ใช้โดยที่ id = 8";
String sql2 = "อัปเดตชื่อผู้ใช้ชื่อ = 'java' โดยที่ id = 7";
String SQL3 = "แทรกลงในผู้ใช้ (ชื่อรหัสผ่าน) ค่า ('JDBC', 'JDBC')";
เพิ่มในบัฟเฟอร์การประมวลผลแบทช์ของคำสั่ง:
STM.ADDBATCH (SQL1);
STM.ADDBATCH (SQL2);
STM.ADDBATCH (SQL3);
ดำเนินการอัปเดตแบทช์:
stm.executebatch ();
ส่งธุรกรรมสำหรับการอัปเดตชุดนี้:
Con.Commit ();
ตอบกลับโหมดธุรกรรมดั้งเดิม:
con.setAutocommit (currentTransactionModle);
แพ็คเกจ javacore1; นำเข้า java.sql.connection; นำเข้า java.sql.date นำเข้า java.sql.driverManager; นำเข้า java.sql.preparedStatement; นำเข้า java.sql.sqlexception; "111111"); // รับการเชื่อมต่อฐานข้อมูล BatchInsert (Conn); // เมธอดชื่อเรียกการเชื่อมต่อฐานข้อมูล releaseconnection (Conn); // การเชื่อมต่อฐานข้อมูลรีลีส} // ความเร็วของการแทรกแบบแบทช์นั้นเร็วกว่าการประมวลผลแบบสามัญที่เป็นโมฆะแบบคงที่สาธารณะแบบคงที่ (การเชื่อมต่อ Conn) {ลอง {string sql = "แทรกลงใน test_user1 (userid, ชื่อผู้ใช้, โหลดเวลา)" + "(? // คำสั่ง SQL ที่แทรกข้อมูล PreparedStatement PSTMT = Conn.PrepareStatement (SQL); Long StartTime = System.currentTimeMillis (); สำหรับ (int i = 0; i <1000; i ++) {pstmt.setLong (1, i); pstmt.setstring (2, "ผู้ใช้"+i); PSTMT.SetDate (3, วันที่ใหม่ (System.CurrentTimeMillis ())); pstmt.addbatch (); // เพิ่มลงในการประมวลผลแบบแบตช์} int [] result = pstmt.executeBatch (); System.out.println ("เวลาทั้งหมดที่ใช้:"+(System.currentTimeMillis () - เริ่มต้น)); pstmt.close (); // ปิดการเชื่อมต่อฐานข้อมูล} catch (sqlexception e) {e.printstacktrace (); }} // ฐานข้อมูลการเชื่อมต่อสาธารณะการเชื่อมต่อแบบคงที่ getConnection (ผู้ใช้สตริง, สตริงผ่าน) {การเชื่อมต่อ conn = null; // ประกาศไดรเวอร์สตริงวัตถุเชื่อมต่อ = "com.mysql.jdbc.driver"; // ชื่อคลาสไดรเวอร์ url = "jdbc: mysql: // localhost: 3306/ทดสอบ?" // ฐานข้อมูล URL + "useUnicode = true & characterencoding = utf8"; // ป้องกันไม่ให้ลองอ่านไม่ออก {class.forname (ไดรเวอร์); // register (โหลด) ไดรเวอร์ conn = driverManager.getConnection (url, ผู้ใช้, ผ่าน); // รับการเชื่อมต่อฐานข้อมูล} } return conn; } // การเปิดตัวฐานข้อมูลการเชื่อมต่อสาธารณะโมฆะคงที่ releaseconnection (การเชื่อมต่อ Conn) {ลอง {ถ้า (conn! = null) conn.close (); } catch (exception e) {e.printstacktrace (); -10. หน้าจอแสดงการปนเปื้อน
แพ็คเกจ javacore1; นำเข้า java.sql.connection; นำเข้า java.sql.driverManager นำเข้า java.sql.preparedStatement; นำเข้า java.sql.resultset; นำเข้า java.sql.sql.sql.sql.sql.sql.sqlexception; "111111"); // รับเพจการเชื่อมต่อฐานข้อมูล (Conn, 1,3); // เมธอดการเชื่อมต่อการเชื่อมต่อฐานข้อมูลและกำหนดแถวที่จะแสดงแถวใดที่ releaseconnection (conn); // ปล่อยการเชื่อมต่อฐานข้อมูล} // หน้าเคียวรีหน้าโมฆะสแตติกสาธารณะ PreparedStatement PSTMT = Conn.PrepareStatement (SQL); pstmt.setint (1, startIndex); pstmt.setint (2, ทั้งหมด); resultset rs = pstmt.executeQuery (); ในขณะที่ (rs.next ()) {system.out.print ("หมายเลขงาน:"+rs.getint (1)); System.out.println ("หมายเลขแผนก:"+Rs.getInt ("Department_id")); } rs.close (); pstmt.close (); } catch (sqlexception e) {e.printstacktrace (); }} // ฐานข้อมูลการเชื่อมต่อสาธารณะการเชื่อมต่อแบบคงที่ getConnection (ผู้ใช้สตริง, สตริงผ่าน) {การเชื่อมต่อ conn = null; // ประกาศไดรเวอร์สตริงวัตถุเชื่อมต่อ = "com.mysql.jdbc.driver"; // ชื่อคลาสไดรเวอร์ url = "jdbc: mysql: // localhost: 3306/ทดสอบ?" // ฐานข้อมูล URL + "useUnicode = true & characterencoding = utf8"; // ป้องกันไม่ให้ลองอ่านไม่ออก {class.forname (ไดรเวอร์); // register (โหลด) ไดรเวอร์ conn = driverManager.getConnection (url, ผู้ใช้, ผ่าน); // รับการเชื่อมต่อฐานข้อมูล} } return conn; } // การเปิดตัวฐานข้อมูลการเชื่อมต่อสาธารณะโมฆะคงที่ releaseconnection (การเชื่อมต่อ Conn) {ลอง {ถ้า (conn! = null) conn.close (); } catch (exception e) {e.printstacktrace (); -11. ชุดผลลัพธ์สามารถเลื่อนได้
แพ็คเกจ javacore1; นำเข้า java.sql.connection; นำเข้า java.sql.driverManager นำเข้า java.sql.preparedStatement; นำเข้า java.sql.resultset; นำเข้า java.sql.sql.sql.sql.sql.sql.sql.sql.sql.sql.sql.sql.sql.sql.sql.sql. "111111"); // รับการเชื่อมต่อฐานข้อมูล sclpllResult (conn); // ชื่อวิธีการโทรการเชื่อมต่อฐานข้อมูล releaseconnection (conn); // ปล่อยการเชื่อมต่อฐานข้อมูล} // เลื่อนชุดผลลัพธ์เพื่อแสดงโมฆะแบบคงที่สาธารณะ // การเลื่อนสามารถเลื่อนได้ // พร้อมกันชุดผลลัพธ์จะอ่านอย่างเดียวและไม่สามารถแก้ไขได้ PreparedStatement PSTMT = Conn.Preparestatement (SQL, ResultSet.type_scroll_sensitive, resultset.curcur_read_only); resultset rs = pstmt.executeQuery (); ในขณะที่ (rs.next ()) {// travel system.out.print ("หมายเลขงาน:"+rs.getlong (1)); System.out.println ("ชื่อ"+rs.getString ("last_name")); } ในขณะที่ (rs.previous ()) {// travel system.out.print ("หมายเลขงาน:"+Rs.getLong (1)); System.out.println ("หมายเลขงาน:"+Rs.getLong (1)); } rs.absolute (6); // เดินทางโดยตรงไปยังบรรทัดถ้า (rs.next ()) {system.out.print ("หมายเลขงาน:"+rs.getlong (1)); System.out.println ("......... หมายเลขแผนก:"+Rs.getString ("Department_id")); } rs.close (); pstmt.close (); } catch (sqlexception e) {e.printstacktrace (); }} // ฐานข้อมูลการเชื่อมต่อสาธารณะการเชื่อมต่อแบบคงที่ getConnection (ผู้ใช้สตริง, สตริงผ่าน) {การเชื่อมต่อ conn = null; // ประกาศไดรเวอร์สตริงวัตถุเชื่อมต่อ = "com.mysql.jdbc.driver"; // ชื่อคลาสไดรเวอร์ url = "jdbc: mysql: // localhost: 3306/ทดสอบ?" // ฐานข้อมูล URL + "useUnicode = true & characterencoding = utf8"; // ป้องกันไม่ให้ลองอ่านไม่ออก {class.forname (ไดรเวอร์); // register (โหลด) ไดรเวอร์ conn = driverManager.getConnection (url, ผู้ใช้, ผ่าน); // รับการเชื่อมต่อฐานข้อมูล} } return conn; } // การเปิดตัวฐานข้อมูลการเชื่อมต่อสาธารณะโมฆะคงที่ releaseconnection (การเชื่อมต่อ Conn) {ลอง {ถ้า (conn! = null) conn.close (); } catch (exception e) {e.printstacktrace (); }}}5. การวางสิบเอ็ดด้านบนเข้าด้วยกันแน่นอนว่าสะดวกและง่ายที่สุดในการประหยัดเวลา (ใครต้องใช้เพียงแค่เปิดความคิดเห็นก่อนหน้า)
package javacore1;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.Date;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.sql.Statement;import java.sql.Types;public class jdbcMySql {public static void main(String[] args) { Connection conn = getConnection("h3", "111111"); // Get database connection //query(conn); //1. Query data //insert(conn); //2. Insert data //delete(conn); //3. Delete data //update(conn); //4. Update data //transCash(conn); //5. Transfer//execProc(conn); //6. Find stored procedures without parameters //int cnt = getMulti(conn); //7. Find stored procedures with parameters //System.out.println("People number: " + cnt); //Find stored procedures with parameters //planInsert(conn); //8. Ordinary processing //batchInsert(conn); //9. Batch processing // paging(conn,1,3);//10. Pagination display//scrpllResult(conn);//11. The result set can be scrolled to releaseConnection(conn);// Release database connection}//1. Query data, define query method public static void query(Connection conn){ String Sql="select * from employees"; try{ Statement stmt=conn.createStatement(); // You can also use PreparedStatement to do ResultSet rs=stmt.executeQuery(Sql);//Execute the sql statement and return the end while(rs.next()){//Transfer the result set System.out.println("People number:"+rs.getString("employee_id")+"Salary:"+rs.getString("salary")); } if(rs !=null){ try{ rs.close(); } catch (SQLException e){ e.printStackTrace(); } } if(stmt !=null){ try{ stmt.close(); } catch(SQLException e){ e.printStackTrace(); } } if(conn !=null){ try{ conn.close(); }catch(SQLException e){ e.printStackTrace(); } } } catch(Exception e){ e.printStackTrace(); }}//2. Insert data public static void insert(Connection conn) { try { String sql = "insert into employees(employee_id,last_name,salary,department_id,userid)" + " values ('100010', 'xiaogou', '7000','004','9')"; // SQL statement Statement stmt1 =conn.createStatement(); // Create a Statement object for executing static SQL statements int count = stmt1.executeUpdate(sql); // Execute the SQL statement for insertion operation and return the number of inserted data System.out.println("Inserted" + count + "bar of data" into biao); //Output the processing result of the insertion operation conn.close(); //Close the database connection} catch (SQLException e) { e.printStackTrace(); } }//3. Delete data public static void delete(Connection conn){ String Sql = "delete from employees where employee_id=100009"; try { Statement stmt = conn.createStatement();// Or use the PreparedStatement method stmt.executeUpdate(Sql);// Execute the sql statement if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } } catch (SQLException e) { e.printStackTrace(); } } }//4. Update data public static void update(Connection conn){ String Sql = "update employees set salary=8000 where employee_id=100005"; try { Statement stmt1 = conn.createStatement();//Or use PreparedStatement method stmt1.executeUpdate(Sql);//Execute the sql statement if (stmt1 != null) { try { stmt1.close(); } catch (SQLException e) { e.printStackTrace(); } } catch (SQLException e) { e.printStackTrace(); } } //5. Transfer (data exchange) (The original data was 100 and 500, but after implementing this function, it becomes 500 and 100. In fact, to put it bluntly, it is to update the data and change the data) public static void transCash(Connection conn){ Statement stmt = null; try{ conn.setAutoCommit(false);//Close automatic submission String sql = "update employees set salary=500 where employee_id=100001"; stmt = conn.createStatement(); stmt.executeUpdate(sql); sql = "update employees set salary=100 where employee_id=100001"; stmt = conn.createStatement(); stmt.executeUpdate(sql); sql = "update employees set salary=100 where employee_id=100002"; stmt.executeUpdate(sql);//Execute the sql statement, and the above two salaries will be replaced by conn.commit();//Commit transaction}catch(Exception e){ e.printStackTrace(); } finally{ try{ if(stmt != null)stmt.close(); } catch(Exception e){ e.printStackTrace(); } } } }//6. Call the stored procedure without a parameter; public static void execProc(Connection conn){ String sql = "{call raisesalary}"; try { CallableStatement cstmt = conn.prepareCall(sql); cstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } } //7. Find stored procedures with parameters public static int getMulti(Connection conn) { int dept_id = 100001; int cnt = 0; String sql = "{call calc_emp_count(?,?)}"; try { CallableStatement cstmt = conn.prepareCall(sql);//Initialize the Statement object cstmt.setInt(1, dept_id);//CallableStatement.setxxx(parameter, value) or (number, value), and PreparedStatement.setxxx(number, value) can only be like this cstmt.setInt(2, cnt); // cstmt.registerOutParameter(2, Types.INTEGER);//Declare the output parameter cstmt.executeUpdate();//Execute the sql statement cnt = cstmt.getInt(2);//Get the result if (cstmt != null) { cstmt.close();//Release the Statement object} } catch (Exception e) { e.printStackTrace(); } return cnt; }//8. Normal processing public static void planInsert(Connection conn) { try { String sql = "insert into test_user1(userid,username,loadingtime)" + " values (?,?,?)"; // SQL statement to insert data PreparedStatement pstmt=conn.prepareStatement(sql); long startTime=System.currentTimeMillis(); for(int i=0;i<1000;i++){ pstmt.setLong(1, i); pstmt.setString(2, "user"+i); pstmt.setDate(3, new Date(System.currentTimeMillis())); pstmt.executeUpdate(); } System.out.println("Total time taken: "+(System.currentTimeMillis() - startTime)); pstmt.close(); //Close the database connection} catch (SQLException e) { e.printStackTrace(); } } //9. The speed of batch insertion is faster than that of ordinary processing public static void batchInsert(Connection conn) { try { String sql = "insert into test_user1(userid,username,loadingtime)" + " values (?,?,?)"; // SQL statement that inserts data PreparedStatement pstmt=conn.prepareStatement(sql); long startTime=System.currentTimeMillis(); for(int i=0;i<1000;i++){ pstmt.setLong(1, i); pstmt.setString(2, "user"+i); pstmt.setDate(3, new Date(System.currentTimeMillis())); pstmt.addBatch();//Add to batch processing} int[] result=pstmt.executeBatch(); System.out.println("Total time consumed: "+(System.currentTimeMillis() - startTime)); pstmt.close(); //Close the database connection} catch (SQLException e) { e.printStackTrace(); } }//10. Pagination query public static void paging(Connection conn,int startIndex,int total){ try{ String sql="select * from employees limit ?,?"; PreparedStatement pstmt=conn.prepareStatement(sql); pstmt.setInt(1, startIndex); pstmt.setInt(2, total); ResultSet rs=pstmt.executeQuery(); while(rs.next()){ System.out.print("work number: "+rs.getInt(1)); System.out.println("Department number: "+rs.getInt("department_id")); }rs.close(); pstmt.close(); }catch(SQLException e){ e.printStackTrace(); } }//11. The result set scrolls to display public static void scrollResult(Connection conn){ try{ String sql="select * from employees"; //The result set can be scrolled//concurrency, the result set is read-only, and the PreparedStatement pstmt=conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet rs=pstmt.executeQuery(); while(rs.next()){ //Travel System.out.print("work number: "+rs.getLong(1)); System.out.println("name"+rs.getString("last_name")); }while(rs.previous()){//Travel System.out.print("work number: "+rs.getLong(1)); System.out.println("salary"+rs.getInt("salary")); } rs.absolute(6);//Indicate which line to jump directly to if(rs.next()){ System.out.print("work number: "+rs.getLong(1)); System.out.println("........Department number: "+rs.getString("department_id")); } rs.close(); pstmt.close(); } catch(SQLException e){ e.printStackTrace(); } } //Database connection public static Connection getConnection(String user, String pass) { Connection conn = null;//Declare the connection object String driver = "com.mysql.jdbc.Driver";// Driver class name String url = "jdbc:mysql://localhost:3306/test?" // Database URL + "useUnicode=true&characterEncoding=UTF8";// Prevent garbled try { Class.forName(driver);// Register (load) driver conn = DriverManager.getConnection(url, user, pass);// Get database connection} catch (Exception e) { e.printStackTrace(); } return conn; }// Release database connection public static void releaseConnection(Connection conn) { try { if (conn != null) conn.close(); } catch (exception e) {e.printstacktrace (); -六.安装下载的数据库驱动程序jar包,不同的数据库需要不同的驱动程序(但是安装方法都是一样的)
在使用JDBC编程时需要连接数据库,导入JAR包是必须的,导入其它的jar包方法同样如此,导入的方法是
打开eclipse
1.右击要导入jar包的项目,点properties
2.左边选择java build path,右边选择libraries
3.选择add External jars
4.选择jar包的按照路径下的确定后就行了。
Java连接MySQL的最新驱动包下载地址
http://www.mysql.com/downloads/connector/j
1.鼠标放在你建的根目录上面。右击,然后选择最下面的properties。
2.然后左边选择java build path,右边选择libraries ,在选择右边的add External jars ,选择jar包的路径,点击确定就可以了
3.装好后,图如下出现你要添加的包。