[Java] SQL

Ma question est simple : j’aimerai savoir comment récupérer les noms des colonnes d’une table dans un programmes Java et si possible les types associés.

J’ai regardé dans la javadoc la classe DatabaseMetaData mais j’y comprend rien. Ca doit surement etre cette méthode : getColumn().
Quelqu’un a une idée ?

Ca devrait t’aider

//Initialize a DatabaseMetaData object
DatabaseMetaData dmd = conn.getMetaData();
//Retrieve database name and version
String dbname = dmd.getDatabaseProductName();
dbname = dbname + " " + dmd.getDatabaseProductVersion();
System.out.println(“Database information:”);
System.out.println(dbname);
System.out.println();
//Retrieve a result set with table information
String [] types = {“TABLE”};
rs = dmd.getTables(null,user,null,types);
while(rs.next()){
String tableName = rs.getString(3);
System.out.println(“Table Name: " + tableName);
System.out.println(” Column, Data Type");
ResultSet rsCols=dmd.getColumns(null,user,tableName,null);

while(rsCols.next()){
System.out.println(" " + rsCols.getString(“COLUMN_NAME”)

  • ", " + rsCols.getString(“TYPE_NAME”));
    }//end while rsCols

}

Ce message a été édité par asl le 10/05/2004

et bien merci, je ne pouvais pas avoir une solution aussi complête.

Salut tout le monde, j’ai un petit problème avec mysql et java.
Jai tout d’abord chargé le mysql-connector-java-3.0.14-production.zip, décompressé le tout. J’utilise Eclipse, j’ai donc rajouté a mon projet le mysql-connector-java-3.0.14-production-bin.jar dans le jav build path et fait import com.mysql.jdbc.*; dans ma classe.
Donc pas de problème je peu utilser les classes Connection et aute mais ustement quand je fait Connection c = DriverManager.getConnection(dbUrl, user, password); il me fait une ereur sur DriverManager cannot be resolved. En effet y’a pas de classe DriverManager. Y’a bien une classe Driver masi c’est tout.

Donc quelq’un pourrait-il me dire ce qu’il faut que je fasse

Une deuxième petite question, j’utilise easyphp vu que j’en fais en parallèle donc pour me connecter a la base de donnée mysql que j’ai fait avec, je met quoi comme url pour me conencter en local ?

EDIT : Bon j’ai fait un import java.sql.DriverManager et là ca me le voit (avant il me proposais pas de l’importer donc je penais pas l’avoir). Par contre maintenant aux lignes :
  Connection conn = DriverManager.getConnection(dbUrl, user, password);   Statement st = conn.createStatement();
ResultSet res = st.executeQuery(“select * from User”);

il me souligne conn,st et res en me disans “Type mismatch: cannot convert from java.sql.Connection to com.mysql.jdbc.Connection”, la même chose pour les Statement et Resultset ! Je commence à en avoir marre, j’aime pô le java
[/quote]

EDIT 2 : Bon, j’ai faitune petite recherche, je faisais un import com.mysql.jdbc alors qu’apperemment on peut faire import java.sql.*
Du coup, les erreurs changent et maintenant :
pour Class.forName(“com.mysql.jdbc.Driver”); il me met Unhandled exception type ClassNotFoundException
pour les 3 lignes de connection, statement et resultset il me met Unhandled exception type SQLException

Je craque au secours
Ce message a été édité par Cobra le 24/06/2004

[quote] Salut tout le monde, j’ai un petit problème avec mysql et java.
Jai tout d’abord chargé le mysql-connector-java-3.0.14-production.zip, décompressé le tout. J’utilise Eclipse, j’ai donc rajouté a mon projet le mysql-connector-java-3.0.14-production-bin.jar dans le jav build path et fait import com.mysql.jdbc.*; dans ma classe.
Donc pas de problème je peu utilser les classes Connection et aute mais ustement quand je fait Connection c = DriverManager.getConnection(dbUrl, user, password); il me fait une ereur sur DriverManager cannot be resolved. En effet y’a pas de classe DriverManager. Y’a bien une classe Driver masi c’est tout.

Donc quelq’un pourrait-il me dire ce qu’il faut que je fasse

Une deuxième petite question, j’utilise easyphp vu que j’en fais en parallèle donc pour me connecter a la base de donnée mysql que j’ai fait avec, je met quoi comme url pour me conencter en local ?

EDIT : Bon j’ai fait un import java.sql.DriverManager et là ca me le voit (avant il me proposais pas de l’importer donc je penais pas l’avoir). Par contre maintenant aux lignes :
  Connection conn = DriverManager.getConnection(dbUrl, user, password);   Statement st = conn.createStatement();
ResultSet res = st.executeQuery(“select * from User”);

il me souligne conn,st et res en me disans “Type mismatch: cannot convert from java.sql.Connection to com.mysql.jdbc.Connection”, la même chose pour les Statement et Resultset ! Je commence à en avoir marre, j’aime pô le java
[/quote]

EDIT 2 : Bon, j’ai faitune petite recherche, je faisais un import com.mysql.jdbc alors qu’apperemment on peut faire import java.sql.*
Du coup, les erreurs changent et maintenant :
pour Class.forName(“com.mysql.jdbc.Driver”); il me met Unhandled exception type ClassNotFoundException
pour les 3 lignes de connection, statement et resultset il me met Unhandled exception type SQLException

Je craque au secours
Ce message a été édité par Cobra le 24/06/2004[/quote]bon alors en vitesse :
Class.forName(“com.mysql.jdbc.Driver”); il me met Unhandled exception type ClassNotFoundException
 -> probablement une/la librairie qui manque dans ton classpath

Pour la 2 em erreur probablement ta connection qui forie vu que tu n’as pas le driver jdbc

Merci, on m’a répondu sur un autre forum que j’ai trouvé entre temp (sur moteurprog.com)