Comparez les prix des domaines et des services informatiques des vendeurs du monde entier

Obtenez toutes les clés externes en utilisant JDBC

j'utilise postgreSQL. J'essaie d'obtenir toutes les clés externes de la table. C'est une méthode que j'utilise actuellement.


public String getFKeyData/String tableName, int i/ throws SQLException {
DatabaseMetaData dm = connection.getMetaData//;
ResultSet rs = dm.getImportedKeys/null, null, tableName/;
while /rs.next/// {
fkTableData = rs.getString/i/;
}
return fkTableData;
}


Ce code fonctionne, mais cela ne me donne que la dernière clé externe, ce qui est bon s'il n'y a qu'un seul dans la table, mais cela ne correspond pas à mes besoins. Tous les exemples que j'ai consultés sur Internet sont très similaires à ceux-ci et donnent une seule clé externe sous forme de sortie.
Actuellement, je imprime simplement les données lorsque vous appuyez sur le bouton.


System.out.println/databaseConnection.getFKeyData/tableName,3//;
System.out.println/databaseConnection.getFKeyData/tableName,4//;
System.out.println/databaseConnection.getFKeyData/tableName,8//;


3 Obtient la table à partir de laquelle la clé externe a été importée. 4 Renvoie le nom de la colonne de clé primaire importée. 8 Obtient le nom de la colonne de la clé étrangère.
Si quelqu'un peut aider, je serai très reconnaissant.
Invité:

Charles

Confirmation de:

Même si le vôtre while loop Répète tout
ResultSet

, La fonction ne renvoie que la dernière colonne de la restriction FK, Parce que sur chaque itération, vous écrasez la valeur de l'itération précédente /
fkTableData = rs.getString/i/;

/. Btw: `fkTableData En fait, il doit y avoir une méthode de variable locale, et non une copie variable.

Votre fonction doit revenir a
List<string>

, mais non a
String

.

Aussi: vous appelez
getImportedKeys//

une

Une fois pour chaque colonne

à ResultSet. C'est extrêmement inefficace. Si vous avez utilisé Oracle, Vous remarqueriez immédiatement cela, car l'extraction de l'information FK Il y a extrêmement lent /Postgres Beaucoup plus rapide lorsque vous accédez à des catalogues système/.

Dans la mesure où
getImportedKeys//

Retourne une ligne pour chaque

colonne

FK, Vous devez également collecter toutes les lignes appartenant à une définition des limitations. /C'est-à-dire pour une combinaison de tables parentales et d'enfants/.

Il serait probablement préférable de déterminer la classe
PkDefinition

, qui stocke toutes les colonnes les colonnes et les noms de table, et rendez votre fonction retour
List<pkdefinition>

, Pour éviter de multiples appels vers la même ligne de l'ensemble résultant.
</pkdefinition></string>

Pour répondre aux questions, connectez-vous ou registre