ฐานข้อมูลการเชื่อมต่อ JDBC
การเขียนโปรแกรมที่เกี่ยวข้องกับการสร้างการเชื่อมต่อ JDBC นั้นค่อนข้างง่าย นี่คือสี่ขั้นตอนง่ายๆ:
การนำเข้าแพ็คเกจ JDBC:
คำสั่งนำเข้าบอกคอมไพเลอร์ Java ว่าจะค้นหาการอ้างอิงในรหัสและวางคลาสที่จุดเริ่มต้นของซอร์สโค้ดของคุณได้ที่ไหน
การใช้แพ็คเกจ JDBC มาตรฐานช่วยให้สามารถเลือกแทรกการอัปเดตและลบข้อมูลจากตาราง SQL เพิ่มการนำเข้าต่อไปนี้ไปยังซอร์สโค้ดของคุณ:
นำเข้า Java.sql.*; // สำหรับโปรแกรม JDBC มาตรฐาน Import Java.Math.*; // สำหรับการสนับสนุน BigDecimal และ BigInteger
ลงทะเบียนไดรเวอร์ JDBC:
ก่อนใช้งานคุณต้องลงทะเบียนไดรเวอร์ของคุณในโปรแกรม ไดรเวอร์ที่ลงทะเบียนเป็นกระบวนการใช้งานที่ไฟล์คลาสของไดรเวอร์ Oracle ถูกโหลดลงในหน่วยความจำเพื่อให้สามารถใช้เป็นอินเทอร์เฟซ JDBC
คุณต้องลงทะเบียนนี้เพียงครั้งเดียวในโปรแกรมของคุณ ไดรเวอร์สามารถลงทะเบียนได้หนึ่งในสองวิธี
วิธีการ (i) - class.forName ():
วิธีที่พบบ่อยที่สุดในการลงทะเบียนไดรเวอร์คือการใช้เมธอด Java ของ ForName () เพื่อโหลดไฟล์คลาสของไดรเวอร์ลงในหน่วยความจำแบบไดนามิกและจะลงทะเบียนโดยอัตโนมัติ วิธีการนี้เป็นที่ต้องการเพราะช่วยให้ไดรเวอร์สามารถลงทะเบียนการกำหนดค่าเพื่อการพกพาได้ง่าย
ตัวอย่างต่อไปนี้ใช้ class.forName () เพื่อลงทะเบียนไดรเวอร์ Oracle:
ลอง {class.forName ("oracle.jdbc.driver.oracledriver");} catch (classnotfoundexception ex) {system.out.println ("ข้อผิดพลาด: ไม่สามารถโหลดคลาสไดรเวอร์!"); System.Exit (1);}คุณสามารถใช้เมธอด getInstance () เพื่อแก้ไข JVM ที่เข้ากันไม่ได้ แต่มีข้อยกเว้นเพิ่มเติมสองข้อดังต่อไปนี้:
ลอง {class.forname ("oracle.jdbc.driver.oracledriver"). newinstance ();} catch (classnotfoundexception ex) {system.out.println ("ข้อผิดพลาด: ไม่สามารถโหลดคลาสไดรเวอร์!"); System.Exit (1); catch (unglemalaccessexception ex) {system.out.println ("ข้อผิดพลาด: ปัญหาการเข้าถึงขณะโหลด!"); System.Exit (2); Catch (InstantiationException Ex) {System.out.println ("ข้อผิดพลาด: ไม่สามารถสร้างอินสแตนซ์ไดรเวอร์!"); System.Exit (3);} วิธี (II) - DriverManager.RegisterDriver ():
วิธีที่สองในการใช้เพื่อลงทะเบียนไดรเวอร์คือการใช้วิธี StaticDriverManager.RegisterDriver ()
หากคุณใช้ JDK JVM ที่เข้ากันไม่ได้เช่น Microsoft ให้วิธีการโดยใช้ registerDriver ()
ตัวอย่างต่อไปนี้ใช้ registerDriver () เพื่อลงทะเบียนไดรเวอร์ Oracle:
ลอง {driver myDriver = ใหม่ oracle.jdbc.driver.oracledriver (); DriverManager.RegisterDriver (myDriver);} catch (classnotFoundException ex) {system.out.println ("ข้อผิดพลาด: ไม่สามารถโหลดคลาสไดรเวอร์!"); System.Exit (1);} สูตร URL ฐานข้อมูล:
เมื่อโหลดไดรเวอร์คุณสามารถสร้างการเชื่อมต่อในโปรแกรมโดยใช้วิธี DriverManager.getConnection () สำหรับการอ้างอิงที่ง่ายมาแสดงรายการวิธีการ overloaded drivermanager.getConnection () สามรายการ:
ที่นี่แต่ละแบบฟอร์มต้องใช้ URL ฐานข้อมูล URL ของฐานข้อมูลชี้ไปที่ที่อยู่ฐานข้อมูล
การพัฒนา URL ฐานข้อมูลมักใช้กันมากที่สุดในการสร้างการเชื่อมต่อ
ตารางต่อไปนี้แสดงรายการชื่อไดรเวอร์ JDBC ที่เป็นที่นิยมและ URL ฐานข้อมูล
รูปแบบ URL ชื่อไดรเวอร์ RDBMSJDBC
mysql com.mysql.jdbc.driver jdbc: mysql: // hostname/databasenameoracle oracle.jdbc.driver.oracledriver jdbc: oracle: @hostname: หมายเลขพอร์ต: databasenamedb2 com.ibm.db2. หมายเลข/databasenamesybase com.sybase.jdbc.sybdriver jdbc: sybase: tds: โฮสต์ชื่อ: หมายเลขพอร์ต/databasename
ชิ้นส่วนที่ไฮไลต์ทั้งหมดในรูปแบบ URL นั้นคงที่และเฉพาะชิ้นส่วนที่เหลือจะต้องเปลี่ยนแปลงตามการตั้งค่าฐานข้อมูล
สร้างวัตถุการเชื่อมต่อ: ใช้ชื่อผู้ใช้และรหัสผ่านของ URL ฐานข้อมูล:
วิธีการ DriverManager.getConnection () สามรูปแบบต่อไปนี้ใช้เพื่อสร้างวัตถุการเชื่อมต่อ รูปแบบที่พบบ่อยที่สุดของ getConnection () ต้องผ่าน URL ฐานข้อมูลชื่อผู้ใช้และรหัสผ่าน:
ค่าของฐานข้อมูลสำหรับฐานข้อมูล URL: สมมติว่าคุณใช้ไดรเวอร์บาง ๆ ของ Oracle คุณต้องระบุโฮสต์: พอร์ต
สมมติว่ามีที่อยู่ TCP/IP โฮสต์ 192.0.0.1 และชื่อโฮสต์และ Oracle Listener ได้รับการกำหนดค่าบนพอร์ต 1521 ชื่อฐานข้อมูลคือ EMP และจากนั้น URL ฐานข้อมูลที่สมบูรณ์คือ:
JDBC: Oracle: Thin: @Amrood: 1521: EMP
ตอนนี้ต้องมีการเรียกใช้ชื่อผู้ใช้และรหัสผ่านและ getConnection () ที่เหมาะสมเพื่อรับวัตถุการเชื่อมต่อดังที่แสดงด้านล่าง:
string url = "jdbc: oracle: thin: @amrood: 1521: emp"; string user = "username"; String pass = "รหัสผ่าน" การเชื่อมต่อ conn = drivermanager.getConnection (url, ผู้ใช้, ผ่าน);
ใช้ URL ฐานข้อมูลเดียวเท่านั้น:
รูปแบบที่สองของ DriverManager.getConnection () ต้องใช้ URL ฐานข้อมูลเท่านั้น:
driverManager.getConnection (url สตริง);
อย่างไรก็ตามในกรณีนี้ URL ของฐานข้อมูลรวมถึงชื่อผู้ใช้และรหัสผ่านมีแบบฟอร์มทั่วไปต่อไปนี้:
JDBC: Oracle: ไดรเวอร์: ชื่อผู้ใช้/รหัสผ่าน@ฐานข้อมูล
ดังนั้นการเชื่อมต่อข้างต้นสามารถสร้างได้ดังนี้:
string url = "jdbc: oracle: Thin: ชื่อผู้ใช้/รหัสผ่าน@amrod: 1521: emp"; การเชื่อมต่อ Conn = drivermanager.getConnection (url);
ใช้ URL ฐานข้อมูลและวัตถุคุณสมบัติ:
รูปแบบที่สามของวิธี driverManager.getConnection () ต้องใช้ URL ฐานข้อมูลและวัตถุคุณสมบัติ:
DriverManager.getConnection (URL สตริง, ข้อมูลคุณสมบัติ);
คุณสมบัติวัตถุบันทึกชุดของคู่คำหลัก มันถูกใช้เพื่อเรียกวิธี getConnection () เมื่อแอตทริบิวต์ไดรเวอร์ถูกส่งผ่านไปยังไดรเวอร์
ในการสร้างการเชื่อมต่อเดียวกันผ่านตัวอย่างก่อนหน้าให้ใช้รหัสต่อไปนี้:
นำเข้า java.util.*; string url = "jdbc: Oracle: Thin: @amrood: 1521: EMP"; ข้อมูลคุณสมบัติ = คุณสมบัติใหม่ (); info.put ("ผู้ใช้", "ชื่อผู้ใช้"); info.put ("รหัสผ่าน", "รหัสผ่าน"); ปิดการเชื่อมต่อ JDBC:
ในตอนท้ายของโปรแกรม JDBC นั้นต้องการให้การเชื่อมต่อทั้งหมดไปยังฐานข้อมูลทั้งหมดปิดเพื่อสิ้นสุดเซสชันฐานข้อมูลแต่ละครั้ง อย่างไรก็ตามหากคุณลืมตัวเก็บขยะ Java จะปิดการเชื่อมต่อและมันจะล้างวัตถุเก่า ๆ
การอาศัยการรวบรวมขยะโดยเฉพาะอย่างยิ่งในการเขียนโปรแกรมฐานข้อมูลเป็นนิสัยการเขียนโปรแกรมที่แย่มาก มันควรจะอยู่ในนิสัยของการปิดวิธีการปิด () ที่เกี่ยวข้องกับวัตถุการเชื่อมต่อ
เพื่อให้แน่ใจว่าการเชื่อมต่อถูกปิดสามารถดำเนินการในที่สุดบล็อกในรหัส ในที่สุดบล็อกจะถูกดำเนินการไม่ว่าจะเกิดขึ้นหรือไม่
หากต้องการปิดการเชื่อมต่อที่เปิดอยู่ด้านบนควรเรียกวิธีการปิด () ดังนี้:
conn.close ();
ปิดการเชื่อมต่ออย่างชัดเจนไปยัง DBMS เพื่อบันทึกทรัพยากร
สร้างแอปพลิเคชัน JDBC:
มีหกขั้นตอนที่เกี่ยวข้องในการสร้างแอปพลิเคชัน JDBC:
รหัสตัวอย่าง:
ตัวอย่างนี้สามารถใช้เป็นเทมเพลตเมื่อคุณต้องการสร้างแอปพลิเคชัน JDBC
รหัสตัวอย่างนี้เขียนขึ้นอยู่กับสภาพแวดล้อมและการติดตั้งฐานข้อมูลในบทก่อนหน้า
คัดลอกตัวอย่างต่อไปนี้ตัวอย่าง. java รวบรวมและเรียกใช้ดังนี้:
// ขั้นตอนที่ 1. นำเข้าแพ็คเกจที่ต้องการ java.sql.*; คลาสสาธารณะตัวอย่างแรก {// ชื่อไดรเวอร์ 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 (); สตริง SQL; 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 ("ลาก่อน!"); } // สิ้นสุดหลัก} // สิ้นสุดตัวอย่างตัวอย่างตอนนี้มารวบรวมตัวอย่างข้างต้นกันดังนี้:
c:> javac firstExample.java
เมื่อใช้งานตัวอย่างแรกมันจะให้ผลลัพธ์ต่อไปนี้:
c:> java firstExample
การเชื่อมต่อกับฐานข้อมูล ... การสร้างคำสั่ง ... ID: 100, อายุ: 18, First: Zara, Last: Aliid: 101, อายุ: 25, First: Mahnaz, Last: Fatmaid: 102, อายุ: 30, First: Zaid, Last: Khanid: 103, อายุ: 28, First: Sumit, Last: Mittal สุดท้าย: Mittal