Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1449 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Problème java.lang.NullPointerException

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème java.lang.NullPointerException

n°1895969
jiraya
Posté le 16-06-2009 à 23:15:34  profilanswer
 

Bonsoir.
J'ai créé un programme qui me permet de me connecter à une base de donnée.
J'ai un fichier main et deux classes ConnexionBD et Salle. Sauf que j'ai une erreur  
Exception in thread "main" java.lang.NullPointerException
        at projetjava.Salle.insererSalle(Salle.java:13)
        at projetjava.Main.main(Main.java:9)
 
Voilà les codes:
main.java

Code :
  1. package projetjava;
  2. public class Main {
  3.     public static void main(String[] args) {
  4.         ConnexionBD connex = new ConnexionBD();
  5.         connex.ouvrirConnexion();
  6.         Salle salle = new Salle();
  7.         salle.insererSalle("Salle 2" );
  8.         connex.fermerConnexion();
  9.     }
  10. }


 
ConnexionBD.java

Code :
  1. package projetjava;
  2. import java.sql.*;
  3. public class ConnexionBD {
  4.    
  5.     private Connection connection;
  6.     public void ouvrirConnexion() {
  7.         try {
  8.             // Chargement du Driver JDBC MySQL
  9.             Class.forName("com.mysql.jdbc.Driver" );
  10.             // Definition des parametres de l'URL de connexion
  11.             String serveur = "localhost";
  12.             String port = "3306"; // 3306 est le port par defaut pour MySQL
  13.             String bdd = "projetjava";
  14.             String url = "jdbc:mysql://" + serveur + ":" + port + "/" + bdd;
  15.             // Utilisateur et mot de passe de connexion
  16.             String user = "yus";
  17.             String password = null;
  18.             // Connexion avec la base de donnees
  19.             connection = DriverManager.getConnection(url, user, password);
  20.             System.out.println("Connexion ouverte !" );
  21.         } catch (SQLException ex) {
  22.             System.err.println("Erreur lors de la connexion a la base de donnees !" );
  23.             ex.printStackTrace();
  24.         } catch (ClassNotFoundException ex) {
  25.             System.err.println("Erreur de chargement du Driver JDBC !" );
  26.             ex.printStackTrace();
  27.         }
  28.     }
  29.     public void fermerConnexion() {
  30.         try {
  31.             // Si la connexion n'est pas deja fermee
  32.             if (!connection.isClosed()) {
  33.                 // Fermeture de la connexion
  34.                 connection.close();
  35.                 System.out.println("Connexion fermee !" );
  36.             }
  37.         } catch (SQLException ex) {
  38.             System.err.println("Erreur lors de la fermeture de la connexion !" );
  39.             ex.printStackTrace();
  40.         }
  41.     }
  42. }


 
Salle.java
 

Code :
  1. package projetjava;
  2. import java.sql.*;
  3. public class Salle {
  4.     private Connection connection;
  5.     public void insererSalle(String desc_salle) {
  6.         try {
  7.             // Requete d'insertion dans la table Partiels
  8.             String query = "INSERT INTO salle(desc_salle) VALUES ('" + desc_salle + "')";
  9.             // Ouverture d'une session avec la base de donnees
  10.             Statement st = connection.createStatement();
  11.             // Execution de la requete SQL
  12.             st.executeUpdate(query);
  13.             // Fermeture de la session
  14.             st.close();
  15.             System.out.println("Insertion effectuee !" );
  16.         } catch (SQLException ex) {
  17.             System.err.println("Erreur lors de l'insertion d'un nouveau partiel !" );
  18.             ex.printStackTrace();
  19.         }
  20.     }
  21. }


 
Je comprend pas pourquoi je n'arrive pas à mettre ma base à jour.
 
Merci d'avance à tous.
 
 
 

mood
Publicité
Posté le 16-06-2009 à 23:15:34  profilanswer
 

n°1895971
pataluc
Posté le 16-06-2009 à 23:45:25  profilanswer
 

salut,
 
déja, je me permet une remarque: tu écris connexion un coup en francais avec un "x", un coup en anglais avec "ct", essaie d'harmoniser tu vas t'y perdre...
 
ensuite en ce qui concerne ton pb, d'un point de vue POO il ya un pb de conception. tu utilise dans la classe Salle un objet connection qui n'est pas initialisé car en fait il l'est dans la classe ConnexionBD. je te conseille de te repencher sur la conception de ton appli...

n°1895973
jiraya
Posté le 16-06-2009 à 23:52:37  profilanswer
 

Merci, je vais revoir pour le connexion c'est vrai que ce n'est pas clair.
J'aimerais séparer la connexion à la base de donnée et la connexion pour mettre une table à jour. Comment puis-je faire alors?

n°1896038
Deamon
Posté le 17-06-2009 à 09:28:04  profilanswer
 

Pattern Singleton pour ConnexionBD déjà (pour éviter d'ouvrir plusieus connexions en même temps) avec dedans une méthode statique getInstance pour retourner l'instance unique de ConnexionBD. Et tu fais un getter pour connection. Ainsi tu y accèdes n'importe où en faisant ConnexionBD.getInstance.getConnection()

n°1896223
jiraya
Posté le 17-06-2009 à 13:06:56  profilanswer
 

C'est du chinois pour moi, je débute en Java!

n°1896227
masklinn
í dag viðrar vel til loftárása
Posté le 17-06-2009 à 13:12:15  profilanswer
 

Deamon a écrit :

Pattern Singleton pour ConnexionBD


[:moouh]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1896232
Deamon
Posté le 17-06-2009 à 13:16:22  profilanswer
 

Désolé. ;)
 
Regarde sur le net le pattern singleton et met le en place pour ConnexionDB (il existe des codes exemples tout fait en Java).
Une fois ça fait à chaque fois que tu veux créer une ConnexionDB tu ne pourras pas faire new ConnexionDB() mais l'appel d'une méthode static du genre getInstance(). Donc concrètement il faudra faire ConnexionDB.getInstance() au lieu du new ConnexionDB().
 
Ensuite dans ConnexionDB  tu mets une méthode getConnexion() qui fait juste "return connexion". C'est ce qu'on appelle un getter.
 
Avec ça pour accéder à la connexion il faudra faire ConnexionDB.getInstance().getConnexion()
 
C'est plus clair ?
 
 


Quoi [:moouh] ?  :o

Message cité 1 fois
Message édité par Deamon le 17-06-2009 à 13:17:11
n°1896234
masklinn
í dag viðrar vel til loftárása
Posté le 17-06-2009 à 13:19:31  profilanswer
 


http://steve.yegge.googlepages.com [...] red-stupid

 

Surtout qu'ici ça sert vraiment à rien du tout, tu pourrais tout aussi bien faire un DBConnection.getConnection() et ça se démerde tout seul.

 

Ou encore mieux, DB.execute() à laquelle tu filles tes opérations (tu crées l'interface qui va bien comme ça il devient possible d'utiliser une classe anonyme si besoin) et qui les exécute dans le contexte de la DB (et pourquoi pas dans une transaction avec nettoyages en cas de besoin toussa)


Message édité par masklinn le 17-06-2009 à 13:34:05

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Problème java.lang.NullPointerException

 

Sujets relatifs
Problème d'importation PhpMyAdminProbleme menu déroulant
problème avec un update[Resolu]Problème de compilation API MYSQL
parseur php avec @implode, preg_split . Probleme pour adapter le code[Oracle & PHP] boucle if dans while : problème
Java/eclipse et SubversionProblème de code dans userform
Probleme spoiler sous IE mais pas sous FFProblème iframe
Plus de sujets relatifs à : Problème java.lang.NullPointerException


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR