การใช้ DatabaseMetaData.getTables() ใน Java
JDBC API มี DatabaseMetaData สำหรับ query metadata ของฐานข้อมูล รวมถึงรายชื่อตาราง
โค้ด Java ตัวอย่างสมบูรณ์
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.DatabaseMetaData;
public class GetAllTables {
public static void main(String[] args) throws SQLException {
Connection conn = null;
try {
// Load driver
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (Exception e) {
System.out.println(e);
}
// เชื่อมต่อฐานข้อมูล
conn = (Connection) DriverManager.getConnection(
"jdbc:mysql://localhost/test", "Manish", "123456");
System.out.println("Connection is created successfully:");
// ดึง metadata
ResultSet rs = null;
DatabaseMetaData meta = (DatabaseMetaData) conn.getMetaData();
rs = meta.getTables(null, null, null, new String[] {"TABLE"});
int count = 0;
System.out.println("All table names are in test database:");
while (rs.next()) {
String tblName = rs.getString("TABLE_NAME");
System.out.println(tblName);
count++;
}
System.out.println(count + " Rows in set");
} catch (Exception e) {
System.out.println(e);
}
}
}
ผลลัพธ์ตัวอย่าง (บางส่วน)
Connection is created successfully: All table names are in test database: add30minutesdemo addcolumn addoneday agecalculatesdemo aliasdemo ... (รวม 103 ตาราง) 103 Rows in set
ตรวจสอบด้วยคำสั่ง MySQL โดยตรง
mysql> USE test; mysql> SHOW TABLES;
+------------------------------+ | Tables_in_test | +------------------------------+ | add30minutesdemo | | addcolumn | | addoneday | ... (รายการตรงกันทุกตัว) +------------------------------+ 103 rows in set (0.01 sec)
พารามิเตอร์ getTables():
getTables(catalog, schemaPattern, tableNamePattern, types[])
catalog- ชื่อ catalog (null = ทั้งหมด)schemaPattern- pattern ของ schema/databasetableNamePattern- pattern ของชื่อตาราง (null = ทั้งหมด)types- array ของประเภท: "TABLE", "VIEW", "SYSTEM TABLE", "ALIAS", "SYNONYM"
สำหรับ MySQL Connector/J 8.0+: ใช้ com.mysql.cj.jdbc.Driver แทน com.mysql.jdbc.Driver