1. รับอินสแตนซ์ของวัตถุนี้
การเชื่อมต่อ con; con = drivermanager.getConnection (URL, ชื่อผู้ใช้, รหัสผ่าน); DatabaseMetadata DBMD = Con.getMetAdata ();
2. การใช้วิธีการ getTables
ต้นแบบ:
Resultset DatabaseMetAdata.getTables (แคตตาล็อกสตริง, สคีมาสตริง, สตริง tablename, สตริง [] ประเภท)
วิธีนี้สามารถส่งคืนชุดผลลัพธ์ชุดผลลัพธ์ด้วย 5 คอลัมน์ในชุดผลลัพธ์ หากเกินขอบเขตจะมีการรายงานข้อยกเว้นนอกขอบเขต
ฟังก์ชั่นคำอธิบาย: รับข้อมูลตารางของพารามิเตอร์ที่ระบุ
คำอธิบายพารามิเตอร์:
พารามิเตอร์: แคตตาล็อก: ชื่อไดเรกทอรีมักจะว่างเปล่า
พารามิเตอร์: สคีมา: ชื่อฐานข้อมูลสำหรับ Oracle USERNAME PARAMETER: TABLENAME: ชื่อตารางพารามิเตอร์: ประเภท: ตารางประเภท (ตาราง | ดู)
หมายเหตุ: ในระหว่างการใช้งานชื่อพารามิเตอร์จะต้องอยู่ในทุน มิฉะนั้นคุณจะได้รับบางสิ่งบางอย่าง
3. การใช้วิธี getColumns
ฟังก์ชั่นคำอธิบาย: รับข้อมูลคอลัมน์ของตารางที่ระบุ
ต้นแบบ:
ResultSet DatabaseMetadata GetColumns (แคตตาล็อกสตริง, สคีมาสตริง, สตริง tablename, สตริงคอลัมน์ชื่อ)
คำอธิบายพารามิเตอร์:
แคตตาล็อกพารามิเตอร์: หมวดหมู่ชื่อพารามิเตอร์สคีมา: ชื่อโครงการผู้ใช้ชื่อพารามิเตอร์ชื่อตาราง: ฐานข้อมูลชื่อตารางชื่อพารามิเตอร์ชื่อคอลัมน์: ชื่อคอลัมน์
4. วิธีการใช้ GetPrimaryKeys
ฟังก์ชั่นคำอธิบาย: รับข้อมูลคีย์หลักของตารางที่ระบุ
ต้นแบบ:
ResultSet DatabaseMetadata getPrimaryKeys (แคตตาล็อกสตริง, สคีมาสตริง, สตริง tablename)
คำอธิบายพารามิเตอร์:
แคตตาล็อกพารามิเตอร์: หมวดหมู่ชื่อพารามิเตอร์สคีมา: ชื่อโครงการผู้ใช้ชื่อพารามิเตอร์ชื่อตาราง: ชื่อตารางฐานข้อมูล
หมายเหตุ: ตรวจสอบให้แน่ใจว่าได้ระบุชื่อตารางมิฉะนั้นค่าส่งคืนจะไม่มีอะไรเลย
5. วิธีการใช้งาน getTypeinfo ()
ฟังก์ชั่นคำอธิบาย: รับข้อมูลประเภทข้อมูลของฐานข้อมูลปัจจุบัน
6. วิธีการใช้งาน getExportedKeys
ฟังก์ชั่นคำอธิบาย: รับข้อมูลคีย์ต่างประเทศสำหรับตารางที่ระบุ
คำอธิบายพารามิเตอร์:
แคตตาล็อกพารามิเตอร์: หมวดหมู่ชื่อพารามิเตอร์สคีมา: ชื่อโครงการผู้ใช้ชื่อพารามิเตอร์ชื่อตาราง: ชื่อตารางฐานข้อมูล
มาอธิบายพารามิเตอร์ทั้งสองนี้โดยใช้ MySQL และ Oracle เป็นตัวอย่าง
โครงสร้างองค์กรของข้อมูล Oracle และ MySQL นั้นแตกต่างกันอย่างสิ้นเชิง ในแง่ของรูปลักษณ์ที่ใช้งานง่ายวิธีการแนบตารางและมุมมองแตกต่างกัน ใน Oracle กลไกการจัดการผู้ใช้ถูกนำมาใช้ เมื่อมีการแนบตารางและมุมมองกับผู้ใช้บางรายผู้ใช้จะกลายเป็น "สคีมา" ของ Oracle; ใน MySQL ตารางและมุมมองจะถูกแนบโดยตรงกับฐานข้อมูล ด้วยวิธีนี้การรับแคตตาล็อกใน Oralce จะเป็นโมฆะและการได้รับสคีมาได้รับเป็นตัวพิมพ์ใหญ่เป็นรายชื่อผู้ใช้ชื่อ แคตตาล็อกที่ได้รับใน MySQL คือรายการชื่อฐานข้อมูลและสคีมาเป็นโมฆะ ผู้อ่านสามารถทดสอบผ่านสองวิธีต่อไปนี้ที่จัดทำโดย DatabaseMetadata และพวกเขาจะส่งคืนทั้งประเภทข้อมูล ResultSet
// รับนิยามหมวดหมู่
rs = dbmd.getCatalogs ();
// รับคำจำกัดความรูปแบบ
rs = dbmd.getschemas ();
จากการวิเคราะห์ข้างต้น:
หากฐานข้อมูลคือ MySQL: แคตตาล็อกพารามิเตอร์แรกสามารถเป็นชื่อของฐานข้อมูล เมื่อรายการนี้เป็นโมฆะมันเป็นชื่อฐานข้อมูลที่ระบุไว้ในสตริง URL และสคีมาพารามิเตอร์ที่สองให้เติมเป็นโมฆะ
หากฐานข้อมูลเป็น Oralce: จากนั้นแคตตาล็อกพารามิเตอร์แรกคือ NULL สคีมาพารามิเตอร์ที่สองจะถูกกรอกในชื่อผู้ใช้ตัวพิมพ์ใหญ่เช่น "Scott" หากรายการเป็นโมฆะขอบเขตการสืบค้นคือผู้ใช้สคีมาทั้งหมด
การวิเคราะห์มูลค่าส่งคืน
ค่าส่งคืนของวิธี getTables เป็นชุดผลลัพธ์ (Resultset) สำหรับข้อมูลในชุดผลลัพธ์มีมากกว่า 20 รายการที่สงวนไว้ที่ JDK1.5 สำหรับข้อมูลที่เกี่ยวข้องของตาราง อย่างไรก็ตามข้อมูลทั้งหมดจะไม่ส่งคืนรายการเหล่านี้มากกว่า 20 รายการ เรามักจะใช้สี่รายการ:
Table_schem: สำหรับ Oracle มันเป็นชื่อผู้ใช้ที่เป็นตัวพิมพ์ใหญ่และเป็นโมฆะสำหรับ MySQL
table_name: ชื่อของตาราง
table_cat = null สำหรับชื่อ Oracle และฐานข้อมูลสำหรับ MySQL
table_type = ประเภทตารางที่ใช้สำหรับตารางและมุมมองตามรายการในอาร์เรย์ประเภทพารามิเตอร์ที่สี่
นำเข้า java.sql.Connection; นำเข้า Java.sql.databaseMetadata นำเข้า Java.sql.driverManager; นำเข้า Java.sql.resultset นำเข้า java.sql.sqlexception; นำเข้า Java.sql.statement; {Private String url = "JDBC: Oracle: Thin: @LocalHost: 1521: Zhyl"; // ที่อยู่เซิร์ฟเวอร์:, หมายเลขพอร์ต: 1521, ชื่ออินสแตนซ์ฐานข้อมูล: Zhyl ชื่อผู้ใช้สตริงส่วนตัว = "Andatabase"; สตริงส่วนตัว pw = "oracl"; การเชื่อมต่อส่วนตัว conn = null; // ชื่อผู้ใช้และรหัสผ่านถูกสร้างขึ้นด้วยตัวเอง การเชื่อมต่อสาธารณะ OpenConn () {ลอง {class.forname ("oracle.jdbc.driver.oracledriver"); ลอง {conn = drivermanager.getConnection (url, ชื่อผู้ใช้, pw);} catch (sqlexception e) {// toDo catch blocke.printStackTrace ();} return conn;} public resultset executeQuery (String SQL) {dababase db = new dababase (); Resultset rs = null; การเชื่อมต่อ con = db.openconn (); ลอง {คำสั่ง sm = con.createStatement (); rs = sm.executeQuery (SQL); } catch (sqlexception e) {// toDo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ E.PrintStackTrace (); } return rs;} public void close () {ลอง {conn.close (); } catch (sqlexception e) {// toDo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ E.PrintStackTrace (); }} // รับชื่อตารางของตารางทั้งหมดในฐานข้อมูลและเพิ่มลงในโครงสร้างรายการ รายการสาธารณะ getTablenamelist (การเชื่อมต่อ Conn) พ่น sqlexception {databaseMetadata dbmd = conn.getMetAdata (); // เข้าถึงตารางทั้งหมดภายใต้ผู้ใช้ปัจจุบัน Andatabase Resultset rs = dbmd.getTables ("null", "Andatabase", "%" }); // system.out.println ("kkkkkkkkkk"+dbmd.getTables ("null", "%", "%", สตริงใหม่ [] {"table"}); รายการ tablenamelist = new ArrayList (); Tablenamelist;} // รับชื่อคอลัมน์ของคอลัมน์ทั้งหมดในตารางข้อมูลและเพิ่มลงในโครงสร้างรายการ รายการสาธารณะ getColumnNamelist (Connection Conn, String tablename) พ่น Sqlexception {DatabaseMetadata dbmd = conn.getMetadata (); Resultset rs = dbmd.getColumns (null, "%", tablename, "%"); ในขณะที่ (rs.next ()) {columnnamelist.add (rs.getString ("column_name"));} return columnnamelist;} โมฆะคงที่สาธารณะหลัก (สตริง s []) โยน sqlexception {dababase dbconn = new dababase () ล้มเหลว "); elsesystem.out.println (" Conn สำเร็จ "); ลอง {list tablelist = dbconn.getTablenamelist (conn); // ดึงตารางทั้งหมดของผู้ใช้ปัจจุบัน // list tablelist = dbconn.getColumnnamelist System.out.println (tablelist.size ()); สำหรับ (วัตถุวัตถุ: tableList) {string ss = (string) object; system.out.println (ss);}} catch (sqlexception e) {e.printstacktrace ();} ในที่สุด {ถ้า (conn! = null) {ลอง {conn.close ();ด้านบนเป็นเนื้อหาเต็มรูปแบบของการค้นหา Java ทุกตารางของฐานข้อมูล Oracle, DatabaseMetadata (คำอธิบายโดยละเอียด) ที่นำเสนอโดยบรรณาธิการ ฉันหวังว่าทุกคนจะสนับสนุน wulin.com เพิ่มเติม ~