JDBC 中的 DatabaseMetaData 是什么?它的意义是什么?

JDBC 中的 DatabaseMetaData 是什么?它的意义是什么?

通常,关于数据的数据称为元数据。 DatabaseMetaData 接口提供方法来获取与您连接的数据库的信息,如数据库名称、数据库驱动程序版本、最大列长度等……

以下是 DatabaseMetaData 类的一些方法。

方法 描述
getDriverName() 检索当前 JDBC 驱动程序的名称。
getDriverVersion() 检索当前 JDBC 驱动程序的版本。
getUserName() 检索用户名。
getDatabaseProductName() 检索当前数据库的名称。
getDatabaseProductVersion() 检索当前数据库的版本。
getNumericFunctions() 检索可用于此数据库的数字函数列表。
getStringFunctions() 检索可用于此数据库的字符串函数列表。
getSystemFunctions() 检索可用于此数据库的系统函数列表。
getTimeDateFunctions() 检索可用于此数据库的时间和日期函数列表。
getURL() 检索当前数据库的 URL。
supportsSavepoints() 验证当前数据库是否支持保存点。
supportsStoredProcedures() 验证当前数据库是否支持存储过程。
supportsTransactions() 验证当前数据库是否支持事务。

阅读更多:MySQL 教程

示例

以下示例演示了 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("连接已建立......");

      //创建DatabaseMetaData对象
      DatabaseMetaData dbMetadata = con.getMetaData();
      //调用supportsBatchUpdates()方法
      boolean bool = dbMetadata.supportsBatchUpdates();

      if(bool) {
         System.out.println("底层数据库支持批量更新");
      } else {
         System.out.println("底层数据库不支持批量更新");
      }

      //检索驱动程序名称
      System.out.println(dbMetadata.getDriverName());
      //检索驱动程序版本
      System.out.println(dbMetadata.getDriverVersion());
      //检索用户名
      System.out.println(dbMetadata.getUserName());
      //检索URL
      System.out.println(dbMetadata.getURL());
      //检索数字函数列表
      System.out.println("数字函数列表:"+dbMetadata.getNumericFunctions());
      System.out.println("");
      //检索字符串函数列表
      System.out.println("字符串函数列表:"+dbMetadata.getStringFunctions());
      System.out.println("");
      //检索系统函数列表
      System.out.println("系统函数列表:"+dbMetadata.getSystemFunctions());
      System.out.println("");
      //检索日期和时间函数列表
      System.out.println("日期和时间函数列表:"+dbMetadata.getTimeDateFunctions());
   }
}

输出

连接已建立......
底层数据库支持批量更新
MySQL-AB JDBC Driver
mysql-connector-java-5.1.12 ( Revision: ${bzr.revision-id} )
root@localhost
jdbc:mysql://localhost/sampleDB
数字函数列表:
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
字符串函数列表:
ASCII,BIN,BIT_LENGTH,CHAR,CHARACTER_LENGTH,CHAR_LENGTH,CONCAT,CONCAT_WS,CONV,ELT,E
XPORT_SET,FIELD,FIND_IN_SET,HEX,INSERT,INSTR,LCASE,LEFT,LENGTH,LOAD_FILE,LOCATE,LO
CATE,LOWER,LPAD,LTRIM,MAKE_SET,MATCH,MID,OCT,OCTET_LENGTH,ORD,POSITION,QUOTE,REPEA
T,REPLACE,REVERSE,RIGHT,RPAD,RTRIM,SOUNDEX,SPACE,STRCMP,SUBSTRING,SUBSTRING,SUBSTR
ING,SUBSTRING,SUBSTRING_INDEX,TRIM,UCASE,UPPER
系统函数列表:
DATABASE,USER,SYSTEM_USER,SESSION_USER,PASSWORD,ENCRYPT,LAST_INSERT_ID,VERSION
日期和时间函数列表:
DAYOFWEEK,WEEKDAY,DAYOFMONTH,DAYOFYEAR,MONTH,DAYNAME,MONTHNAME,QUARTER,WEEK,YEAR,H
OUR,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_TIME
STAMP,FROM_UNIXTIME,SEC_TO_TIME,TIME_TO_SEC

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程