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:

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class PrimaryKey {

    public static void main(String[] args) {
        String user = "root";
        String pass = "";
        String host = "localhost";
        String db = "meineTestDB";
        String table = "Kunden";

        try {
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://" + host + "/" + db;
            Connection connection = DriverManager
                    .getConnection(url, user, pass);

            DatabaseMetaData dbmd = connection.getMetaData();
            ResultSet rs = dbmd.getPrimaryKeys(null, null, table);

            while (rs.next()) {
                System.out.println("Primary Key Name: " + rs.getString(6)
                        + ", Primary Key Nummer: " + rs.getString(5)
                        + ", Column: " + rs.getString(4));
            }
            connection.close();
        } catch (SQLException e) {
            System.out.println("Fehler bei Tabellenabfrage: " + e);
            return;
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}