Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

แสดงรายชื่อตารางทั้งหมดใน MySQL Database ด้วย Java (JDBC)

การใช้ 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/database
  • tableNamePattern - pattern ของชื่อตาราง (null = ทั้งหมด)
  • types - array ของประเภท: "TABLE", "VIEW", "SYSTEM TABLE", "ALIAS", "SYNONYM"

สำหรับ MySQL Connector/J 8.0+: ใช้ com.mysql.cj.jdbc.Driver แทน com.mysql.jdbc.Driver