Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Java] Stockage de donnée

Sujet résolu
    16 décembre 2006 à 22:49:49

    Bonsoir,

    je débute en java et je me pose une question.

    Je suis actuellement en stage de 2e année de BTS info et je dois faire un programme de gestion d'élèves (ajout suppression etc)

    Les élèves doivent bien sûr être stockés (ce que je n'ai jusqu'ici pas fait). Je me demande si je dois opter pour une bdd sql ou un fichier texte.

    J'ai commencé à faire des recherches sur le SQL car c'est ce qui me paraissait le plus logique et ordonné. Mais j'ai entendu des mots barbares comme ODBC et plein de choses bizarres lol.

    Etant donné l'urgence de la chose, j'opte donc pour un fichier mais je me demande si mon projet est faisable avec un fichier.

    Qu'en pensez vous ???

    merci d'avance

    Cordialement
    • Partager sur Facebook
    • Partager sur Twitter
      16 décembre 2006 à 22:54:21

      Oh oui, très faisable, celon moi ... ^^

      j'ai jamais essayé SQL sur java, je peux donc pas t'aider de ce côté la..
      • Partager sur Facebook
      • Partager sur Twitter
      Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
        16 décembre 2006 à 22:59:50

        en fait pour les bases de données tout dépend de laquelle tu utilise pour mysql il suffit de télécharger leurs drivers et de suivre leur tuto , en 1heure y a moyen de l'avoir en main...

        sinon pour les fichier j'ai découvert récement xstream (un bibli) qui permet de sérialiser des objets dans des fichiers xml (vraiment très simple d'utilisation. et c'est propre
        • Partager sur Facebook
        • Partager sur Twitter
          16 décembre 2006 à 23:12:10

          concernant les fichiers, d'après ce que j'ai compris du tutos rédigé par un visiteur du site, il faudrait que je prenne la lecture indexé car plus rapide à rechercher.

          Par contre, toujours d'après le visiteur, il est impossible d'écrire dans un fichier lorsqu'on l'ouvre en indexé et moi j'aurai besoin d'écrire puisque je voudrais pouvoir modifier un élève

          alors ??? vous en dîtes quoi ?

          merki encore pour votre aide

          ps : où puis je trouver un tuto et les drivers pour mysql ?
          • Partager sur Facebook
          • Partager sur Twitter
            16 décembre 2006 à 23:22:01

            moi je dit ca dépend de la quantité de données que tu doit brassé.

            si c'est énorme laisse tomber les fichiers prend une base de données, si c'est résonnable tu stocke tes élèves dans une liste et tu sérialise la liste et tout ce qu'elle contient. ca dépend de beaucoup de chose en fait. il te reste combien de temps pour ton projet? parce plus je réfléchit plus je me dit que la bd serait la meilleur solution
            • Partager sur Facebook
            • Partager sur Twitter
              16 décembre 2006 à 23:41:14

              ok alors je vais mieux expliquer mon cas.

              Comme je le disais, je suis en stage et donc jusqu'au 7 Février.

              Je ne suis pas assez compétent pour faire ce programme. En fait, mon prof m'avait assuré que je serai capable de le faire au moment du stage, hors il a abandonné l'aprentissage du java alors que l'on venait d'attaquer les classes.

              Autant vous dire, que c'est pas la jouasse. J'ai donc continué à avancer tout seul et j'en suis au positionnement des composant avec les différentes méthodes de positionnement etc...

              Je suis donc loin des fichiers et des bdds. J'aurai pu me réfugier vers une gestion d'élève en php mysql mais j'ai déjà trop de projets en php.

              Donc je DOIS le faire en java.

              J'ai exactement 257 enregistrements (élèves) réparti dans 10 classes.

              Mon programme ne devra pas seulement regrouper tous les renseignements de chaque élève mais aussi gérer la garderie.

              Donc je devrai savoir quel enfant est resté à la garderie tel jour et combien de jour est resté un enfant à la garderie durant les 2 dernier mois.

              Au final la facture de la garderie devra être établi avec les détail de jour.

              J'espère avoir été clair, c'est assez difficile à expliquer surtout qu'il y a plusieurs types de garderie (matin et soir, matin ou soir, mercredi, vendredi.

              Merci d'avance
              • Partager sur Facebook
              • Partager sur Twitter
                17 décembre 2006 à 9:14:54

                A mon avis, une base de donnée serait plus pratique.
                Si tu connais déjà sql, tu pourras écrire des requetes qui vont calculer ces trucs pour toi et tu ne devrais pas t'en soucier !
                • Partager sur Facebook
                • Partager sur Twitter
                  17 décembre 2006 à 22:21:43

                  je suis d'accord alors pour t'aider j'ai retrouver des classe qui permette de manipuler mysql facilement, si tu connait le sql et que tu sait utiliser une classe java sa devrais aller (il faudra que tu télécharge le pilote mysql pour java sur le site de mysql)


                  import java.sql.Connection;
                  import java.sql.DriverManager;
                  import java.sql.SQLException;

                  import com.mysql.jdbc.ResultSet;
                  import com.mysql.jdbc.Statement;

                  /**
                   * implémentation finie
                   * @author mythrys
                   *
                   */

                  public class DataBaseImpl implements DataBase {
                          private String serveur;
                          private String user;
                          private String mdp;
                          private String base;
                          private boolean ok;
                          private Connection conn;
                          private Statement st;
                         
                         
                          public DataBaseImpl() {
                                  this.serveur = "";
                                  this.user = "";
                                  this.base = "";
                                  this.mdp = "";
                                  this.ok = false;
                          }
                         
                          /**
                           * ouvre une connection avec le serveur mysql
                           * @throws DataBaseException
                           *
                           */

                          public void open() throws DataBaseException {
                                  //1
                                  if(!ok)
                                          throw new DataBaseException("paramètre non initialiser");
                                 
                                  //2
                                  String url = "jdbc:mysql://" + serveur + "/" + base + "?user=" + user + "&password=" + mdp;
                                  //3
                                  try {
                                          Class.forName("com.mysql.jdbc.Driver").newInstance();
                                          conn = DriverManager.getConnection(url);
                                          st = (Statement) conn.createStatement();
                                  }       
                                  catch(SQLException e) {
                                          throw new DataBaseException(e);
                                  }
                                  catch(InstantiationException e) {
                                          e.printStackTrace(System.err);
                                          throw new DataBaseException(e.getMessage());
                                         
                                  }
                                  catch(IllegalAccessException e) {
                                          e.printStackTrace(System.err);
                                          throw new DataBaseException(e.getMessage());
                                  }
                                  catch(ClassNotFoundException e) {
                                          e.printStackTrace(System.err);
                                          throw new DataBaseException(e.getMessage());
                                  }
                                 
                          }
                         
                          /**
                           * ferme la connection à la base de donnée
                           * @throws DataBaseException
                           */

                          public void close() throws DataBaseException {
                                 
                                  if(!ok)
                                          throw new DataBaseException("paramètre non initialiser");
                                 
                                 
                                  try {
                                          conn.close();
                                  }
                                  catch(SQLException e) {
                                          throw new DataBaseException(e);
                                  }
                          }
                         
                          /**
                           * exécute une requete et renvoie les résulats, si il n'y a pas de résultat
                           *  alors la fonction renvoie null
                           * @param requete la requete a executé, non null et en conformité
                           * avec la syntaxe sql, sinon la fonction return null
                           * @return les résultats de la requete
                           * @throws DataBaseException
                           */

                          public ResultSet query(String requete) throws DataBaseException {
                                 
                                  if(!ok)
                                          throw new DataBaseException("paramètre non initialiser");
                                 
                                 
                                  if(requete == null)
                                          return null;
                                 
                                  try {
                                          return (ResultSet) st.executeQuery(requete);
                                  }
                                  catch(SQLException e) {
                                          throw new DataBaseException(e);
                                  }
                                 
                                 
                          }
                         
                          /**
                           * définit les paramètres du serveur mysql
                           * @param serveur le nom du serveur
                           * @param user le nom de l'utilisateur de mysql
                           * @param mdp le mot de passe de l'utilisateur
                           * @param base le nom de la base de donnée ou seront stocké les tables mysql
                           *
                           */

                          public void setParametre(String serveur, String user, String mdp, String base) {
                                  //1
                                  this.serveur = serveur;
                                  this.user = user;
                                  this.base = base;
                                  this.mdp = mdp;
                                  //2
                                  this.ok = true;
                                 
                          }
                  }





                  la classe des exceptions
                  que je renvoie


                  import java.sql.SQLException;

                  /**
                   * implémentation terminée
                   * @author mythrys
                   *
                   */

                  public class DataBaseException extends Exception {
                         
                         
                         
                          private SQLException exc;
                          private String message;
                         
                          public DataBaseException(SQLException e) {
                                  exc = e;
                                  message = "SQLException: " + exc.getMessage() + "\n" +
                                                    "SQLState: " + exc.getSQLState() + "\n" +
                                                    "VendorError: " + exc.getErrorCode();
                          }
                         
                         
                          public DataBaseException(String message) {
                                  this.message = message;
                          }
                         
                         
                          /**
                           * renvoie le message complet des erreur sql
                           * @return renvoie le message complet des erreur sql
                           */

                          public String getMess() {              
                                  return message;
                          }
                         
                          /**
                           * ecrit les erreurs
                           *
                           */

                          public void PrintException() {
                                  System.err.println(message);
                          }
                  }




                  et bon apprentissage accéléré pour le java, si t'as des question on est toujours là
                  • Partager sur Facebook
                  • Partager sur Twitter
                    18 décembre 2006 à 13:13:21

                    re

                    et merki beaucoup pour ces explications mais j'avoue que je n'y comprends pas grand chose

                    A quoi me sert ces 2 sources exactement ?

                    edit : au fait, je viens de vérifier auprès de mon hébergeur et voilà ce que j'ai vu ...

                    "Une base de données MySQL est stockée sur un serveur dédié aux bases de données. Ce dernier est protégé par un pare-feu pour assurer la sécurité de vos données. Vous ne pouvez accéder à ce serveur de bases de données et à votre base de données qu'à partir de votre site Web. Vous ne pouvez pas vous connecter directement à une base de données MySQL à partir de votre PC (connexion ODBC externe)"

                    Vous en pensez quoi ???
                    • Partager sur Facebook
                    • Partager sur Twitter
                      18 décembre 2006 à 15:21:00

                      mes sources permette de faire des requête sql à mysql sans se soucier du pilote et compagnie
                      en gros tu crée une instance, tu initialise les paramètres, une connexion, tu fait te requête et tu ferme la connexion. et la classe se charge de toutes les opération sous-jacente.

                      alors je ne vois pas vraiment ce que la base mysql de ton hébergeur viens faire ici XD, tu compte déployer ton application sur un site ? ou sur un pc d'une école qui va gérer ses élèves.

                      parce dans le premier cas, ca devient très compliqué, dans le premier ben il suffit d'avoir mysql installé et démarré sur le post où ton application va tourné (en l'occurrence pour le développement la tienne)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        19 décembre 2006 à 10:05:05

                        en fait je pensais qu'il était necessaire d'avoir une base online même pour un developpement logiciel.

                        Ok je vais reprendre tes sources avec les explications que tu m'a donné et essayer d'y voir plus clair.

                        Merci encore
                        • Partager sur Facebook
                        • Partager sur Twitter
                          19 décembre 2006 à 10:26:54

                          n'oublie pas les pilotes java mysql à inclure dans ton projet
                          http://dev.mysql.com/downloads/connector/j/5.0.html
                          • Partager sur Facebook
                          • Partager sur Twitter
                            19 décembre 2006 à 11:23:20

                            j'ai bien regardé et j'avoue que sa me pause problème parce que je vois mal comment utiliser cette classe, ou entrer les requête et tout.

                            du coup j'ai regardé les fichiers sérialisé mais c'est pas mieux lol.

                            Bon allez j'y retourne...

                            edit : en plus vu qu'il faut que j la présente au bts vaut mieux que je comprenne ce que je fais lol
                            • Partager sur Facebook
                            • Partager sur Twitter
                              19 décembre 2006 à 17:00:27

                              sinon tu sérialize et enregistre une classe qui contient toutes tes données des que tu fais une modif
                              et tu la charge au démarrage de ton appli

                              mais javoue java+sql c'est propre
                              • Partager sur Facebook
                              • Partager sur Twitter
                                20 décembre 2006 à 10:28:35

                                Bon et bien je me lance sur java+sql

                                Merci encore a tous
                                • Partager sur Facebook
                                • Partager sur Twitter

                                [Java] Stockage de donnée

                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                • Editeur
                                • Markdown