Thread

Résolu
iris35406 Messages postés 19 Date d'inscription lundi 16 novembre 2009 Statut Membre Dernière intervention 4 juin 2010 - 24 mars 2010 à 09:20
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 24 mars 2010 à 11:35
Bonjour a tous
j'ai une base de données par laquelle je me connecte a distance j'ai crée une ihm pour pouvoir me connecté de façon dynamique j'ai ajouté quelque fonctionnalité tel que purge de la base ou acquisition de nouvelle données et c'est la qu'est le problème quand je veut acquérir des données sa me freeze l'ihm alors j'ai mis en place un thread mais je n'arrive pas a le mettre totalement en place car quand je lance l'ihm et que je veut acquérir des données sa me m'est:

java.sql.SQLException: No suitable driver found for
at java.sql.DriverManager.getConnection(DriverManager.java:602)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at connectmysql.BDConnect.AcquerirDon(BDConnect.java:162)
at connectmysql.UnThread.run(UnThread.java:42)

merci si pouvez m'apporté votre aide

12 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
24 mars 2010 à 11:35
Salut,

J'ai pas vraiment regardé ton code en détail dans le thread, mais il y a plusieurs choses qui posent problème :

1/ Comme tu viens de le dire, tu crées une nouvelle instance de ta classe DBConnect sans même l'initialiser. A toi de la remplir correctement dans la constructeur de ta classe Unthread (tu peux surcharger le constructeur en lui ajoutant des paramètres si nécessaire). Ca viens très certainement de là ton problème !
2/ Tu crée une nouvelle connexion toutes les 1 secondes : tu auras vite une OutOfMemoryException à ce rythme là !
Crée plutôt ta connection en dehors de la boucle while, et ne mets dans ta boucle while que l'exécution de la requête INSERT.
3/ Est-ce que ta variable p est initialisée lorsque tu rentres dans ton thread ?
4/ Attention aux noms des variables : i et p, c'est guère lisible.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
24 mars 2010 à 09:45
Salut,

Est-ce que tu as mis le bon driver JDBC dans le classpath de ton application ?
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
iris35406 Messages postés 19 Date d'inscription lundi 16 novembre 2009 Statut Membre Dernière intervention 4 juin 2010
24 mars 2010 à 09:48
je pense que oui j'utilise mysql-connector-java-5.1.10
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
24 mars 2010 à 09:54
Salut,

Oui ca ok, mais est-ce qu'il est bien référencé dans le classpath de ton application ?

Montre nous aussi le code de ta classe AcquerirDon pour voir ce qui ne va pas.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0

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

Posez votre question
iris35406 Messages postés 19 Date d'inscription lundi 16 novembre 2009 Statut Membre Dernière intervention 4 juin 2010
24 mars 2010 à 10:03
je ne pense pas que se soit le classpath qui pose probleme car j'arrive a me connecté a la base de données et meme utilisé les autre fonctionnalité tels que la purge

Ceci se trouve dans la classe BDConnect

public void Acquerir(){
// création d'une instance du Thread
UnThread thread = new UnThread();

// Activation du Thread
thread.start();
// tant que le thread est en vie...
if(i==1){
thread.stop();
}
}

public void AcquerirDon(){

try{while(true){
con = DriverManager.getConnection(url, id, pw);
state= con.createStatement();
// requete sql
state.executeUpdate("INSERT INTO informations (nomcampagne,Date, MesurePression, MesureDebit, Mode, ConsigneDebit,ConsignePression, VitesseRotation, Frequence, Puissance, Tension, Courant) VALUES ('"+camp+"',CURRENT_TIMESTAMP," + p.getPression() + ","+ p.getDebit() + "," +p.getMode( )+ "," +p.getCondebit( )+ "," +p.getConPression( )+ "," +p.getVitrot( )+ "," +p.getFrequence( )+ "," +p.getPuissance( )+ "," +p.getTension( )+ "," +p.getCourant( )+ ");");

Thread.sleep(1000);
}
}catch (Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null,
"Impossible d'acquérir les données", "Connexion",
JOptionPane.ERROR_MESSAGE);
}
}

et ceci dans la classe Unthread

public class UnThread extends Thread{
private BDConnect con= new BDConnect();

public void run() {

con.AcquerirDon();


}
}
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
24 mars 2010 à 10:07
Salut,

La ligne 162 de ta classe AcquerirDon c'est laquelle ?
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
iris35406 Messages postés 19 Date d'inscription lundi 16 novembre 2009 Statut Membre Dernière intervention 4 juin 2010
24 mars 2010 à 10:28
c'est celle la :

con = DriverManager.getConnection(url, id, pw);
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
24 mars 2010 à 10:32
Salut,

Ok, quelle est la valeur de ta variable url ?

Est-ce que le user et le mot de passe est correct ?

Est-ce que cet user a les droits d'accès (pour les requêtes SELECT, INSERT, UPDATE et DELETE) à cette base de données ?
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
iris35406 Messages postés 19 Date d'inscription lundi 16 novembre 2009 Statut Membre Dernière intervention 4 juin 2010
24 mars 2010 à 10:40
user et le mot de passe sont correct je l'ai avait teste avant.

l'url est egale a sa "jdbc:mysql://192.168.12.131/hydro"
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
24 mars 2010 à 10:46
Salut,

Tu as essayé de te connecter à cette base avec un outil ?

Tu es sûr de pouvoir y accéder à distance ? Un serveur MySQL doit être paramétré afin d'accepter les connexions distantes (problèmes de sécurité !!!). Tu n'a pas un parefeu qui bloque les connexions sinon ?
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
iris35406 Messages postés 19 Date d'inscription lundi 16 novembre 2009 Statut Membre Dernière intervention 4 juin 2010
24 mars 2010 à 10:53
j'arrivai a me connecté a la base avant que je n'essaye de mettre en place le thread c'est depuis que je l'ai mis que l'acquisition ne fonctionne plus
0
iris35406 Messages postés 19 Date d'inscription lundi 16 novembre 2009 Statut Membre Dernière intervention 4 juin 2010
24 mars 2010 à 11:18
le probleme vient du fait que j'apelle un nouveau constructeur DBConnect donc les valeur url id et pw sont vide
0