J'essaie de trouver toute la clé unique de toute la table. Et ce serait indépendant du fournisseur. S'il vous plaît aider merci d'avance.Code Java pour trouver la clé unique de toute la table de la base de données
Répondre
Comme Kunal dit que vous devez utiliser le schéma et le contrôle du champ de table est nécessaire essayer de vérifier la classe de schéma
Vous pouvez utiliser JDBC MetaData pour obtenir des informations sur de telles choses.
Voici un exemple d'extrait que vous pouvez utiliser.
Si le pilote Oracle JDBC est utilisé pour le test, il est indépendant du fournisseur. Vous pouvez utiliser le code avec d'autres fournisseurs de bases de données.
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Test {
public static void main(String[] args) throws Throwable {
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521/service.name", "username", "password");
DatabaseMetaData meta = conn.getMetaData();
String schemaName = "SCHEMA_NAME";
List<String> tables = listAllTableNames(meta, schemaName);
printPrimaryKeys(schemaName, tables.iterator(), meta);
printUniqueIndexes(schemaName, tables.iterator(), meta);
}
private static List<String> listAllTableNames(DatabaseMetaData meta, String schemaName) throws SQLException {
List<String> list = new ArrayList<String>();
ResultSet rs = meta.getTables(null, schemaName, null, new String[] { "TABLE" });
while(rs.next()) {
String tableName = rs.getString("TABLE_NAME");
list.add(tableName);
}
return list;
}
private static void printPrimaryKeys(String schemaName, Iterator<String> iter, DatabaseMetaData meta) throws SQLException {
while(iter.hasNext()) {
String tableName = iter.next();
ResultSet rs = meta.getPrimaryKeys(null, schemaName, tableName);
while(rs.next()) {
String pkName = rs.getString("PK_NAME");
String table = rs.getString("TABLE_NAME");
String schema = rs.getString("TABLE_SCHEM");
String columnName = rs.getString("COLUMN_NAME");
System.out.println("----------------------------------------");
System.out.println("Table: " + schema + "." + table);
System.out.println("Key Name: " + pkName);
System.out.println("Column(s): " + columnName);
}
}
}
private static void printUniqueIndexes(String schemaName, Iterator<String> iter, DatabaseMetaData meta) throws SQLException {
while(iter.hasNext()) {
String tableName = iter.next();
boolean listUniqueIndex = true;
ResultSet rs = meta.getIndexInfo(null, schemaName, tableName, listUniqueIndex, true);
while(rs.next()) {
String indexName = rs.getString("INDEX_NAME");
String table = rs.getString("TABLE_NAME");
String schema = rs.getString("TABLE_SCHEM");
String columnName = rs.getString("COLUMN_NAME");
if(indexName == null) {
continue;
}
System.out.println("****************************************");
System.out.println("Table: " + schema + "." + table);
System.out.println("Index Name: " + indexName);
System.out.println("Column Name: " + columnName);
}
}
}
}
Vérifiez également DbTamer sur sourceforge, avec le code source inclus. http://sourceforge.net/projects/dbtamer/ Il est conçu pour désosser les bases de données afin de faciliter le transport entre différents SGBDR, mais le cœur est le code pour itérer les tables et extraire les métadonnées de table dans un modèle objet réutilisable.
- 1. Trouver la contrainte unique d'une table de base de données
- 2. tronquer toute la table dans la base de données mysql
- 3. Lors du développement de la base de données puis compolsury pour définir la clé primaire ou la clé forign dans chaque table de la base de données?
- 4. Trouver GUID dans la base de données
- 5. sud. migrer toute la base de données
- 6. ActiveRecord Joindre la table pour la base de données existante
- 7. Détection clé de la flèche - KeyDown pour toute la fenêtre
- 8. requêtes SQL - trouver de la valeur de l'élément de toute base de données
- 9. Récupère la clé de groupe de la table de pont
- 10. Comment rechercher une chaîne dans toute la base de données?
- 11. conception de la base de données - normalisation de la table
- 12. valeur unique de la table
- 13. Mettre à jour la clé primaire de la table dans une autre base de données
- 14. java insertion de la date dans la base de données
- 15. RowGuide et la clé UNIQUE
- 16. Rendre la table MySQL unique
- 17. Comment lister toute la table dans la base de données mysql
- 18. Fait et dimension de la table unique
- 19. Valeur unique dans la base de données MySQL
- 20. La table de la base de données contient les URLs
- 21. champ unique de la base de données mysql à php
- 22. Est-ce une bonne idée d'utiliser rowguid comme clé unique dans la conception de la base de données?
- 23. Interrogation d'une table d'audit unique pour la création de rapports
- 24. Aide pour la conception de la base de données (CakePHP)
- 25. Comment gérer la duplication entre java enum et la table de base de données?
- 26. Comment configurer l'outil de reverse engineering de base de données Hibernate pour mapper la relation de la table de base de données en tant qu'héritage?
- 27. Persistance Java dans la base de données
- 28. Auto-incrémentation de l'ID de table en utilisant la combinaison de chaînes dans la base de données automatiquement
- 29. Obtenir la clé primaire de la table?
- 30. SQL - Jointure de table où la clé primaire dans la première table fait partie de la clé dans la seconde
que voulez-vous dire? Vous souhaitez interroger le schéma d'une table donnée pour ses contraintes uniques? – Thilo
Supposons que j'essaie de trouver toute la clé unique d'une table de Java. Donc, si vous le pouvez, s'il vous plaît dites-moi sur l'API que je devrais utiliser. – Kunal