:hello: Bonjour,
Et bien j’ai tester avec le code du lien et c’est long… très très long.
Du coup je cherche depuis hier une autre méthode et je pense avoir trouver.
Je vous montres le code histoire d’aider ceux qui en ont besoin. N’hésitez pas si vous voyez des soucis :jap:
[spoiler]
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import oracle.jdbc.pool.OracleDataSource;
public class Test {
public static void main(String[] args) {
Connection connection = null;
String url = "mon_url";
String user = "user";
String pass = "pass";
try {
OracleDataSource ods = new OracleDataSource();
ods.setURL(url);
ods.setUser(user);
ods.setPassword(pass);
connection = ods.getConnection();
DatabaseMetaData dmd = connection.getMetaData(); // Recupération des informations de la BDD
String[] type = {"TABLE"}; // Je ne souhaite afficher que les TABLES
ResultSet rset = dmd.getTables(null, user, "%", type);
while(rset.next()) {
System.out.println(rset.getString("TABLE_NAME")); // Affichage du nom de la Table
/**
* Je fait une requête sur la Table et je ne récupère qu'une Ligne
* Le rownum remplace le mot clé LIMIT pour Oracle
*/
String query = "Select * from " + rset.getString("TABLE_NAME") + " where rownum < 2";
Statement stmt = connection.createStatement();
ResultSet rset2 = stmt.executeQuery(query);
while(rset2.next()) {
ResultSetMetaData rset3 = rset2.getMetaData(); // Récupération des informations de la requête
int nbCol = rset3.getColumnCount(); // Je compte le nombre de colonne
for (int i = 1; i <= nbCol; i++) {
String nomCol = rset3.getColumnName(i);
String typCol = "(" + rset3.getColumnTypeName(i) + ")";
System.out.println("\t" + nomCol + typCol);
}
}
stmt.close();
rset2.close();
}
rset.close();
connection.close();
} catch (SQLException sql) {
sql.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
[/spoiler]
Voila aussi le code pour le JTree :
[spoiler]
public void tableList() {
Connection conn = null;
String url = "";
String user = "";
String pass = "";
racine = new DefaultMutableTreeNode(user);
try {
OracleDataSource ods = new OracleDataSource();
ods.setURL(url);
ods.setUser(user);
ods.setPassword(pass);
conn = ods.getConnection();
try {
DatabaseMetaData dbm = conn.getMetaData();
String[] types = {"TABLE"};
ResultSet rs = dbm.getTables(null,user,"%",types);
while (rs.next()){
tableTree = new DefaultMutableTreeNode(rs.getString("TABLE_NAME"));
String query = "Select * from " + rs.getString("TABLE_NAME") + " where rownum < 2";
Statement stmt = conn.createStatement();
ResultSet rset2 = stmt.executeQuery(query);
while(rset2.next()) {
ResultSetMetaData rset3 = rset2.getMetaData();
int nbCol = rset3.getColumnCount();
for (int i = 1; i <= nbCol; i++) {
String nomCol = rset3.getColumnName(i);
tableTree.add( new DefaultMutableTreeNode(nomCol));
}
}
rset2.close();
racine.add(tableTree);
}
rs.close();
conn.close();
} catch (SQLException sqle) {
JOptionPane.showMessageDialog(null, sqle.getMessage(), "Erreur SQL", JOptionPane.ERROR_MESSAGE);
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Erreur", JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
}
}
[/spoiler]
Edité le 02/07/2009 à 11:38