Wie lassen sich die Primärschlüssel einer MySQL-Tabelle auslesen?

Mit Hilfe der Methode getPrimaryKeys() der Klasse DatabaseMetaData können diese ermittelt werden.

In der MySQL-eigenen Datenbank information_schema sind die Metadaten der MySQL-Installation abgelegt. Die Klasse DatabaseMetaData stellt diverse Methoden bereit, mit denen auf bequeme Art und Weise häufig benötigte Angaben hieraus ermittelt werden können.
Im Beispiel wird zunächst nach der Initialisierung der Variablen mit den Verbindungsdaten eine Verbindung zur Datenbank aufgebaut. Das Vorgehen hierbei wird im Abschnitt Tabelle auslesen näher erläutert.
Nach dem Erstellen eines DatabaseMetaData-Objektes werden der erwähnten Methode getPrimaryKeys() drei String-Parameter übergeben. Die ersten beiden, Katalog- und Schema-Name, können null oder ein Leerstring ("") sein. Werden Leerstrings übergeben, so werden die PrimaryKeys ohne Katalog bzw. Schema ermittelt, wird null übergeben, so werden Katalog und Schema nicht zur Ermittlung hinzugezogen. Der dritte Parameter ist der Tabellenname.
Das zurückgegebene ResultSet enthält sechs Werte, die durch Auslesen der einzelnen Positionen mit getString(int index) ermittelt werden können:

public class PrimaryKey {
    
    static String user = "user";
    static String pass = "password";
    static String host = "localhost";
    static String db = "Personal";
    static String table = "Angestellte";

    public static void main(String[] args) {
        String url = "jdbc:mysql://" + host + "/" + db;
        getKeys(url);
    }
    
    public static void getKeys(String url) {
        try(Connection connection = DriverManager
                .getConnection(url, user, pass)) {
            Class.forName("com.mysql.cj.jdbc.Driver");
            DatabaseMetaData dbmd = connection.getMetaData();
            ResultSet rs = dbmd.getPrimaryKeys(null, null, table);
            if (rs.next()) {
                do {
                System.out.println("Primary Key Name: " + rs.getString(6)
                        + ", Primary Key Nummer: " + rs.getString(5)
                        + ", Column: " + rs.getString(4));
                }while(rs.next());
            }else {
                System.out.println("No keys found");
            }
        } catch (SQLException e) {
            System.out.println("Fehler bei Tabellenabfrage: " + e);
            return;
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.