JDBCのDatabaseMetaDataとは?主なメソッドと実装例をわかりやすく解説
DatabaseMetaData(データベースメタデータ)とは
一般に、「データについてのデータ」のことをメタデータと呼びます。JDBCのDatabaseMetaDataインターフェースは、接続済みのデータベースに関するさまざまな情報を取得するためのメソッドを提供します。具体的には、データベース名、JDBCドライバのバージョン、カラムの最大長などの情報です。
接続先のデータベース製品やバージョン、対応している機能に応じて処理を切り替えたい場合など、DatabaseMetaDataは実際の開発において非常に役立ちます。ConnectionオブジェクトのgetMetaData()メソッドを呼び出すだけで、DatabaseMetaDataのインスタンスを簡単に取得できます。
DatabaseMetaDataの主なメソッド一覧
代表的なメソッドは以下の通りです。
| メソッド | 説明 |
|---|---|
| getDriverName() | 現在のJDBCドライバの名前を取得します |
| getDriverVersion() | 現在のJDBCドライバのバージョンを取得します |
| getUserName() | ユーザー名を取得します |
| getDatabaseProductName() | 接続先データベースの製品名を取得します |
| getDatabaseProductVersion() | 接続先データベースのバージョンを取得します |
| getNumericFunctions() | このデータベースで利用可能な数値関数の一覧を取得します |
| getStringFunctions() | このデータベースで利用可能な文字列関数の一覧を取得します |
| getSystemFunctions() | このデータベースで利用可能なシステム関数の一覧を取得します |
| getTimeDateFunctions() | このデータベースで利用可能な日付・時刻関数の一覧を取得します |
| getURL() | 接続先データベースのURLを取得します |
| supportsSavepoints() | セーブポイントに対応しているかどうかを確認します |
| supportsStoredProcedures() | ストアドプロシージャに対応しているかどうかを確認します |
| supportsTransactions() | トランザクションに対応しているかどうかを確認します |
コード例
次のサンプルは、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オブジェクトの生成
DatabaseMetaData dbMetadata = con.getMetaData();
// supportsBatchUpdates()メソッドの呼び出し
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());
// URLの取得
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 funtions: "+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,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
System functions:
DATABASE,USER,SYSTEM_USER,SESSION_USER,PASSWORD,ENCRYPT,LAST_INSERT_ID,VERSION
Time and Date funtions:
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
このように、con.getMetaData()で取得したDatabaseMetaDataオブジェクトの各メソッドを呼び出すだけで、ドライバ情報やユーザー名、接続URL、利用可能なSQL関数の一覧などを簡単に参照できます。データベースの種類ごとに動作を変える汎用的なアプリケーションを構築する際には、ぜひ活用してください。
-
ブロックチェーンOSとは?仕組みと将来性を初心者向けにわかりやすく解説
近年、テクノロジー業界ではブロックチェーンが大きな注目を集めています。しかし、ブロックチェーンとは何か、なぜそれほど需要があるのかを理解していない方にとっては、話についていくのが難しいのが現状です。さらに「ブロックチェーンオペレーティングシステム(OS)」という言葉まで登場すると、ますます混乱してしまうかもしれません。この記事では、ブロックチェーンの基本概念と、なぜその上にオペレーティングシステムが必要とされるのかを、初心者の方にもわかりやすく解説します。ブロックチェーンとは何か?ブロックチェーンとは、改ざんに強い設計が施された取引やイベントの記録台帳のことです。この高い耐改ざん性を実現してい
-
Android System WebView(ASW)とは?役割と更新方法を徹底解説
Android端末のアプリ一覧や、Google Playストアのアップデート通知で「Android System WebView(AndroidシステムWebView)」という名前を目にしたことがあるかもしれません。この重要なシステムアプリは、ユーザーが直接インストールしたり操作したりするものではありませんが、Android OSにとって欠かせない存在です。 お使いのAndroidのバージョンによって、Android System WebViewはさまざまな形で提供されています。どの端末でも、ASW(またはその派生版)を有効かつ最新の状態に保つ必要があります。本記事では、その理由と、このシス