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
极客教程