সাধারণত ডেটা সম্পর্কে ডেটাকে মেটাডেটা বলা হয়। 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 doesn't support 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 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