Thread [Résolu]

Messages postés
19
Date d'inscription
lundi 16 novembre 2009
Statut
Membre
Dernière intervention
4 juin 2010
- - Dernière réponse : cs_DARKSIDIOUS
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
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
Afficher la suite 

12 réponses

Meilleure réponse
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
84
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 191 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_DARKSIDIOUS
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
84
0
Merci
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
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
19
Date d'inscription
lundi 16 novembre 2009
Statut
Membre
Dernière intervention
4 juin 2010
0
Merci
je pense que oui j'utilise mysql-connector-java-5.1.10
Commenter la réponse de iris35406
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
84
0
Merci
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
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
19
Date d'inscription
lundi 16 novembre 2009
Statut
Membre
Dernière intervention
4 juin 2010
0
Merci
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();


}
}
Commenter la réponse de iris35406
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
84
0
Merci
Salut,

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

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

con = DriverManager.getConnection(url, id, pw);
Commenter la réponse de iris35406
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
84
0
Merci
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
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
19
Date d'inscription
lundi 16 novembre 2009
Statut
Membre
Dernière intervention
4 juin 2010
0
Merci
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"
Commenter la réponse de iris35406
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
84
0
Merci
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
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
19
Date d'inscription
lundi 16 novembre 2009
Statut
Membre
Dernière intervention
4 juin 2010
0
Merci
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
Commenter la réponse de iris35406
Messages postés
19
Date d'inscription
lundi 16 novembre 2009
Statut
Membre
Dernière intervention
4 juin 2010
0
Merci
le probleme vient du fait que j'apelle un nouveau constructeur DBConnect donc les valeur url id et pw sont vide
Commenter la réponse de iris35406