9
votes

Comment puis-je obtenir le nom de la colonne de la clé principale d'une table de base de données à partir de l'objet Resultins ou RestaurantsAtaData en Java?

J'écris une application Java. J'ai des Resultset. Maintenant, je veux trouver le nom Coloumn de la clé primaire de la table.

est-il possible d'obtenir ce nom Coloumn via un objet ResultSet ou des résultatsseTAData ou une autre manière.

Je n'ai trouvé aucun moyen de trouver cela.


1 commentaires

Quel est le problème avec la recherche de la base de données pour voir comment la table a été définie? Lorsqu'il y a plusieurs contraintes de clé uniques, on pourrait être "primaire" en ce qui concerne les utilisateurs et une clé de substitution est définie comme primaire dans la base de données. Pourquoi voulez-vous essayer de l'automatiser?


3 Réponses :


9
votes

non. Vous n'obtiendrez pas ces informations de ResultatsSet (Strong> ou Restaurantstadata .

Ce que vous voulez utiliser pour cela est DatabaseMetaData classe. De ce chèque de classe getPrimarykeys méthode pour obtenir les informations souhaitées.

Bien sûr, pour l'utiliser, vous devrez connaître le nom de la table.


5 commentaires

Que signifie "catalogue" et "schéma"? Le "schéma" est-il en référence au nom de la base de données?


@Yatendra, quel dB utilisez-vous? Ce sont courants dans DB2. Si vous utilisez Eclipse et connectez-vous avec la vue "Développement de la base de données", vous pourrez le comprendre seul.


@ERICP, j'utilise la base de données Eclipse IDE et MySQL. Mais je ne veux pas que mon code soit dépendant d'une base de données particulière.


Une recherche Google rapide, trouvée Tutorialized.com/view/Tutorial/ Base de données-métadata-with-jdbc / ... -: Parfois, pour un problème donné, il existe différentes solutions basées sur le fournisseur de base de données. Par exemple, le code qui obtient les noms de table d'une base de données Oracle est différent du code permettant aux noms des tableaux d'une base de données MySQL. Lorsque vous développez une application ou un cadre pour une base de données relationnelle, assurez-vous que votre gestionnaire de pool de connexion prend le nom du fournisseur en tant que paramètre. "


@Pablo Santa Cruz: Merci! Je cherche cette réponse. Pourquoi ce n'est pas accepté de toute façon?



0
votes

Un bon outil que vous pouvez utiliser pour vérifier les informations sur les métadonnées est dbvisualizer .

Il utilise les métadonnées JDBC pour récupérer les définitions de table et d'autres parties de la base de données. Schema et Catalogue sont des colonnes dans la vue Définition de la table - de sorte que vous pouvez vérifier quelles valeurs sont dans ces colonnes pour votre base de données préférée.

dbvisualizer est disponible dans une version de base gratuite.


0 commentaires

3
votes

Je tiens à ajouter, si dans une table, vous avez un champ d'autocrampe, il doit s'agir de la clé principale. Donc, votre code pourrait ressembler à ceci:

if(metaColumn.isAutoIncrement(i)) {
  primaryKey = metaColumn.getColumnName(i);
  i=nColoumn+1;
}


2 commentaires

Cela échouerait si la clé primaire n'est pas une identité.


Peut-être que mon expérience est limitée à MySQL, mais dans MySQL, un autocrampe doit être une clé primaire. CMIIW.