Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

DatabaseMetaData ใน JDBC คืออะไร และความสำคัญอย่างไร?


โดยทั่วไป ข้อมูลเกี่ยวกับข้อมูลเรียกว่า Metadata อินเทอร์เฟซ DatabaseMetaData ให้เมธอดเพื่อดูข้อมูลฐานข้อมูลที่เชื่อมต่ออยู่ เช่น ชื่อฐานข้อมูล, เวอร์ชันไดรเวอร์, ความยาวคอลัมน์สูงสุด เป็นต้น

เมธอดสำคัญของคลาส DatabaseMetaData:

เมธอดคำอธิบาย
getDriverName()ดึงชื่อ JDBC driver ปัจจุบัน
getDriverVersion()ดึงเวอร์ชัน JDBC driver ปัจจุบัน
getUserName()ดึงชื่อผู้ใช้
getDatabaseProductName()ดึงชื่อฐานข้อมูลปัจจุบัน
getDatabaseProductVersion()ดึงเวอร์ชันฐานข้อมูลปัจจุบัน
getNumericFunctions()ดึงรายการฟังก์ชันตัวเลขที่รองรับ
getStringFunctions()ดึงรายการฟังก์ชันสตริงที่รองรับ
getSystemFunctions()ดึงรายการฟังก์ชันระบบที่รองรับ
getTimeDateFunctions()ดึงรายการฟังก์ชันวันที่/เวลาที่รองรับ
getURL()ดึง URL ของฐานข้อมูลปัจจุบัน
supportsSavepoints()ตรวจสอบว่ารองรับ savepoints หรือไม่
supportsStoredProcedures()ตรวจสอบว่ารองรับ stored procedures หรือไม่
supportsTransactions()ตรวจสอบว่ารองรับ transactions หรือไม่

ตัวอย่าง

โปรแกรมสาธิตการใช้ DatabaseMetaData:

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;

public class DatabaseMetadataExample {
    public static void main(String args[]) throws Exception {
        // เชื่อมต่อ
        String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
        Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
        System.out.println("Connection established......");
        // สร้าง DatabaseMetaData object
        DatabaseMetaData dbMetadata = con.getMetaData();
        // ตรวจสอบ batch updates
        boolean bool = dbMetadata.supportsBatchUpdates();
        if(bool) {
            System.out.println("Underlying database supports batch updates");
        } else {
            System.out.println("Underlying database doesnt supports batch updates");
        }
        // ดึงข้อมูลต่างๆ
        System.out.println(dbMetadata.getDriverName());
        System.out.println(dbMetadata.getDriverVersion());
        System.out.println(dbMetadata.getUserName());
        System.out.println(dbMetadata.getURL());
        System.out.println("Numeric functions: " + dbMetadata.getNumericFunctions());
        System.out.println();
        System.out.println("String functions: " + dbMetadata.getStringFunctions());
        System.out.println();
        System.out.println("System functions: " + dbMetadata.getSystemFunctions());
        System.out.println();
        System.out.println("Time and Date functions: " + dbMetadata.getTimeDateFunctions());
    }
}

ผลลัพธ์

Connection established......
Underlying database supports batch updates
MySQL-AB JDBC Driver
mysql-connector-java-5.1.12 ( Revision: ${bzr.revision-id} )
root@localhost
jdbc:mysql://localhost/sampleDB
Numeric functions: ABS,ACOS,ASIN,ATAN,ATAN2,BIT_COUNT,CEILING,COS,COT,DEGREES,EXP,FLOOR,LOG,LOG10,MAX ,MIN,MOD,PI,POW,POWER,RADIANS,RAND,ROUND,SIN,SQRT,TAN,TRUNCATE
String functions: ASCII,BIN,BIT_LENGTH,CHAR,CHARACTER_LENGTH,CHAR_LENGTH,CONCAT,CONCAT_WS,CONV,ELT,EXPORT_SET,FIELD,FIND_IN_SET,HEX,INSERT,INSTR,LCASE,LEFT,LENGTH,LOAD_FILE,LOCATE,LOCATE,LOWER,LPAD,LTRIM,MAKE_SET,MATCH,MID,OCT,OCTET_LENGTH,ORD,POSITION,QUOTE,REPEAT,REPLACE,REVERSE,RIGHT,RPAD,RTRIM,SOUNDEX,SPACE,STRCMP,SUBSTRING,SUBSTRING,SUBSTRING,SUBSTRING,SUBSTRING_INDEX,TRIM,UCASE,UPPER
System functions: DATABASE,USER,SYSTEM_USER,SESSION_USER,PASSWORD,ENCRYPT,LAST_INSERT_ID,VERSION
Time and Date functions: DAYOFWEEK,WEEKDAY,DAYOFMONTH,DAYOFYEAR,MONTH,DAYNAME,MONTHNAME,QUARTER,WEEK,YEAR,HOUR,MINUTE,SECOND,PERIOD_ADD,PERIOD_DIFF,TO_DAYS,FROM_DAYS,DATE_FORMAT,TIME_FORMAT,CURDATE,CURRENT_DATE,CURTIME,CURRENT_TIME,NOW,SYSDATE,CURRENT_TIMESTAMP,UNIX_TIMESTAMP,FROM_UNIXTIME,SEC_TO_TIME,TIME_TO_SEC