Base de données & java

soukainaelaz Messages postés 5 Date d'inscription mardi 24 juillet 2012 Statut Membre Dernière intervention 1 juin 2013 - 26 juil. 2012 à 17:35
 Utilisateur anonyme - 26 juil. 2012 à 22:11
Bonjour,
dans le cadre de mon stage je dois réaliser une application en java qui permet de faire une connexion avec une base de données en access et qui permet la consultation des différentes rubriques de la base au travers d'une interface.
Avec mes modestes connaissances en java & bases de données j'ai fais ceci, mais apparemment il y a une erreur qlq part ,la connexion avec la BD n'est pas entretenue!
si qlq'un pourrai m'aider j'en serai reconnaissante.


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

public class forme extends javax.swing.JFrame {

/**
* Creates new form forme
*/
public forme() {
initComponents();

}
private void formWindowOpened(java.awt.event.WindowEvent evt){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
cnx=DriverManager.getConnection("jdbc:odbc:stage");

st=cnx.createStatement();
dt=new DefaultTableModel();

dt.addColumn("Num");
dt.addColumn("Marque_du_commutateur");
dt.addColumn("Nombre_total_de_ports");
dt.addColumn("Nombre_ouccupés");
dt.addColumn("Adresse_IP");
dt.addColumn("N_serie");
dt.addColumn("Batiment");
comm.setModel(dt);
afficher();
}catch(Exception e){
JOptionPane.showMessageDialog(null,"erreur de conex"+e.getMessage());

}

}

private void afficher(){
try{
dt.setRowCount(0);
Rs=st.executeQuery("Select* Form stg");
while(Rs.next())
{
Num =Rs.getInt(" Num");
Marque_du_commutateur=Rs.getString("Marque_du_commutateur");
N_serie=Rs.getString("N_serie");
Adresse_IP=Rs.getString("Adresse_IP");
Batiment=Rs.getString("Batiment");
Nombre_total_de_ports=Rs.getInt(" Nombre_total_de_ports");
Nombre_ouccupés=Rs.getInt(" Nombre_ouccupés");
Object[] stg={Num,Marque_du_commutateur,N_serie,Adresse_IP,Batiment,Nombre_total_de_ports,Nombre_ouccupés};
dt.addRow(stg);
}

} catch(Exception e){
JOptionPane.showMessageDialog(null,"erreur de conex"+e.getMessage());

}

}

public static void main(String args[]) {


java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {
new forme().setVisible(true);
}
});
}
private Connection cnx;
private Statement st;
private ResultSet Rs;
private DefaultTableModel dt;
private String Marque_du_commutateur;

private String Adresse_IP;
private String N_serie;
private String Batiment;
private int Nombre_total_de_ports;
private int Nombre_ouccupés;
private int Num;

// Variables declaration - do not modify
private javax.swing.JTable comm;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextField jTextField7;
private javax.swing.JTextField titre;
private javax.swing.JTextField txtadd;
private javax.swing.JTextField txtbatim;
private javax.swing.JTextField txtmar;
private javax.swing.JTextField txtnbrocc;
private javax.swing.JTextField txtnbrtot;
private javax.swing.JTextField txtnserie;
// End of variables declaration
}

5 réponses

Utilisateur anonyme
26 juil. 2012 à 17:41
Salut,

mais apparemment il y a une erreur qlq part ,la connexion avec la BD n'est pas entretenue!


J'imagine que as as un message d'erreur, peux-tu nous le mettre ici stp ? Cela nous aiderait grandement.

--
Pylouq
Heureux sont ceux qui lisent le Réglement, ils ne finiront peut-être pas au bûcher.
0
soukainaelaz Messages postés 5 Date d'inscription mardi 24 juillet 2012 Statut Membre Dernière intervention 1 juin 2013
26 juil. 2012 à 17:49
Ah j'ai oublié de dire que aucun msg d'erreur n'est declenché !! et merci
0
soukainaelaz Messages postés 5 Date d'inscription mardi 24 juillet 2012 Statut Membre Dernière intervention 1 juin 2013
26 juil. 2012 à 17:54
L'interface présente un tableau identique à celui dans la BD qui normalement une fois l'interface ouverte doit être rempli mais c'est pas la cas !!
0
Utilisateur anonyme
26 juil. 2012 à 21:53
mais apparemment il y a une erreur qlq part ,la connexion avec la BD n'est pas entretenue


L'interface présente un tableau identique à celui dans la BD qui normalement une fois l'interface ouverte doit être rempli mais c'est pas la cas !!


Si j'ai bien compris, tu as une IHM avec un tableau qui se remplit avec les données de la BDD en temps normal, sauf que là ce n'est pas le cas. C'est bien ça ?
Je voudrais savoir ce qui te fait dire que c'est la connexion à la BDD qui n'est plus maintenue. Car oui, ton problème peut venir de ça, mais peut également provenir d'une requête SQL foireuse ou encore d'une méthode qui ne fait pas son boulot (comme remplir ton fameux tableau).

Ah j'ai oublié de dire que aucun msg d'erreur n'est declenché

Ça c'est un petit peu étonnant. As-tu des warnings par exemple dans ton IDE ? Sinon, est-ce que tu as des choses du genre try { /* ton code */ } catch (Exception e){} ? Car si tu attrapes un exception (une erreur) avec ce bloc, et que tu n'affiches rien dans le catch, tu n'auras aucun message d'erreur.

Au fait, tu as fait générer ce code ? Où tu l'as mélangé en faisant ton post ? Car là, il est vraiment immonde, et encore je pèse mes mots.

--
Pylouq
Heureux sont ceux qui lisent le Réglement, ils ne finiront peut-être pas au bûcher.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
26 juil. 2012 à 22:11
Je viens de trouver ! Au fait j'avais zappé des morceaux de codes car j'avais lu trop vite. Bon, le problème vient du fait que tu as mal conçu ton code, surtout dans la gestion des exceptions.

Dans ta méthode afficher, tu exécutes un requête SQL qui est bel et bien foireuse. Tu cherches à exécuter dans Rs=st.executeQuery("Select* Form stg"); la requête Select* Form stg. Tu as inversé deux lettres, cela devrait être select * from stg ! Du coup, tu dois avoir normalement (sinon ça craint pas mal) une exception de levée du type SQLException, ou un truc comme ça. Or, chose que je n'avais pas vu, tu as utilisé un try/catch dans ta méthode qui récupère tous les types d'exceptions, et qui affiche une pop-up qui indique qu'il y a un problème de connexion. Or, ce n'est absolument pas le cas. Tu as donc cru que le problème venait d'une connexion à la BDD qui n'était pas maintenue, et il y avait bien un message d'erreur affiché !!

Bref faire un try/catch (Exception e) n'est pas une bonne idée. Car tu attrapes toutes les exceptions sans distinction, et tu appliques le même traitement pour chaque type, ce qui ne rime à rien. Donc au lieu de faire un gros bloc comme tu as fait, fais plusieurs catch sous ton try qui gèrent chacun un type d'exception bien donné.

Corrige tout ça et redis nous ce qu'il en est stp.

--
Pylouq
Heureux sont ceux qui lisent le Réglement, ils ne finiront peut-être pas au bûcher.
0
Rejoignez-nous