IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Gestion Base de données SQLITE


Sujet :

avec Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Gestion Base de données SQLITE
    Bien le bonjour à tous.
    Étant nouveau sur ce forum j’espère ne pas me tromper de section ... bref.

    Je vais esseyer de vous expliquer mon problème, j'ai comme projet la création d'un Gestionnaire de contacts à faire en java (pour le moment) à partir d'une base de données.
    Pour expliquer le problème, mettons nous en situation ...

    J'ai créé 4 contacts :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    _Id              Nom           Prenom          DateDeNaissance            Numero             Notes
     
    1               test             test              010203                       0123456789         test
    2               retest           retest           020151                       0987654321         retest
    3               allo                allo              014585                       0548745214         allo                      
    4               woot            woot             999999                       9999999999         woot
    Voila ma BDD sauf que dés que je supprime un contact mes Id ne sont plus dans le bon ordre...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    1        test      test       010203                0123456789  test               
    4        woot     woot      999999                9999999999  woot
    et donc mon code se perd ...
    voila la partie de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    int c = dlm.size(); //Compte le nombre d'élément dans la JList dlm
    for (i=0;i<=c;i++){
                if (jListI_sup.isSelectedIndex(i)){ // si l'élément est sélectionné alors...
                    try {
                        //Connection au driver JDBC
                        Class.forName("org.sqlite.JDBC");
                        //Declaration des champs a remplir pour la fonction getConnection()
                        String url = "jdbc:sqlite:/C:/Users/.../Desktop/Stage 2010 2011/MesContacts.db3";
                        String user = "root";
                        String passwd = "";
                        //Connection a la base de donees
                        Connection conn = DriverManager.getConnection(url, user, passwd);
                        //Creation d'un objet Statement
                        java.sql.Statement state = conn.createStatement();
                        state.executeQuery("DELETE FROM MesContacts WHERE (_Id = "+ i +")");
    Et donc voila .. j’espère avoir été asse clair, si vous avez besoin de renseignements supplémentaires hésitez pas.

    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    si ton code a besoin que les ids soient dans l'ordre, quand tu récupère les donnée, ajouter une clause order by à ta requete. Il n'y a pas d'ordre "naturel" dans une base de donnée

    De plus ton code serait plus logique et lisible en réécrivant comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int[] selected = dlm.getSelectedIndices(); //Compte le nombre d'élément dans la JList dlm
    for (i : selected){
       //supprimer l'élément i

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Déjà pour commencé merci pour la réponse rapide

    Ensuite je suis pas sur que cela corresponde à mon problème c'est à dire qu'en utilisant ma manière je regarde combien j'ai de ligne dans ma BDD (c= 2 par exemple), ensuite mon i va de 0 à 2 alors que après suppression mes Id sont 1 et 4 et donc rien ne se passe ... ranger dans un ordre croissant et décroissant ne devrait pas régler ce problème (enfin du moins je pense tel que je l'ai compris^^)

    En gros j'ai besoin d'une nouvelle ligne qui garde toujours les valeurs 1, 2, 3, ...même après suppression est ce possible ?

    P.S. : Désolé pour les balises "code" je vais faire attention ...

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    C'est la logique du code à revoir. Au lieu d'utiliser les index dans le JList comme les index dans la DB, il faut stocker dans la JList comme valeur des objet qui contienent l'identifiant. Ensuite tu parcoure les objets selectionné (méthode getSeletectItems()) et pour chaque objet, tu supprime la ligne qui lui correspond dans la DB.

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Hum je vais partir sur une tentative d'appliquer cela si jamais en fin d’après midi je m'en sors vraiment pas et si j'ai pas trouver une corde en route je reposterai merci

  6. #6
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Désolé pour le double post ...

    Pour prévenir que ton conseil m'a été utile j'ai fais un gros chantier dans le genre pas vraiment propre du point de vue développeur mais le résultat y est alors bon ... je te montre ce que sa donne juste si jamais d'autres personnes se pose la question ...
    Maintenant est ce que ce que j'ai fais est compréhensible ... surement

    Encore merci à toi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    private void BTsupI_supActionPerformed(java.awt.event.ActionEvent evt) {                                           
            int c = dlm.size(); //Compte le nombre d'élément dans la JList
            int i=0;
                    try {
                        //Connection au driver JDBC
                        Class.forName("org.sqlite.JDBC");
                        //Declaration des champs a remplir pour la fonction getConnection()
                        String url = "jdbc:sqlite:/C:/Users/.../Desktop/Stage 2010 2011/MesContacts.db3";
                        String user = "root";
                        String passwd = "";
                        //Connection a la base de donees
                        Connection conn = DriverManager.getConnection(url, user, passwd);
                        //Creation d'un objet Statement
                        java.sql.Statement state = conn.createStatement();
                        int id=0;
                        ResultSet result = state.executeQuery("SELECT _Id FROM MesContacts");
                            for (i=0;i<=c;i++){
                                if (jListI_sup.isSelectedIndex(i)){ // si l'élément est sélectionné alors...
                                    for (int k=0;k<=i;k++){
                                        result.next();
                                        id = result.getInt("_Id");
                                    }
                                    state.executeQuery("DELETE FROM MesContacts WHERE (_Id = "+ id +")");
                                }
                            }
                        i=0;
                        c=dlm.size();
                        dlm.removeAllElements();
                        doClose(RET_ANNULER_SUPPRIMER);
                        new I_GestionnaireContacts().setVisible(true);
     
                    } 
                    catch (Exception e) {
                        i=0;
                        c=dlm.size();
                        dlm.removeAllElements();
                        doClose(RET_ANNULER_SUPPRIMER);
                        new I_GestionnaireContacts().setVisible(true);
                    }
        }

  7. #7
    Membre régulier Avatar de Tora21
    Homme Profil pro
    Développeur("Java"); //Débutant
    Inscrit en
    Mai 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur("Java"); //Débutant

    Informations forums :
    Inscription : Mai 2011
    Messages : 140
    Points : 116
    Points
    116
    Par défaut
    A privilégier l'utilisation des preparedStatement au lieu des statement.
    Ah ça y’est, j’viens de comprendre à quoi ça sert la canne. En fait ça sert à rien… Du coup ça nous renvoie à notre propre utilité : l’Homme face à l’Absurde !

    -Perceval-

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Eclipse + gestion base de données
    Par fanette dans le forum Eclipse Java
    Réponses: 11
    Dernier message: 04/11/2018, 19h41
  2. Gestion Base de données SQLite
    Par AnonymZZ dans le forum Android
    Réponses: 6
    Dernier message: 27/11/2013, 17h41
  3. Réponses: 6
    Dernier message: 08/10/2013, 20h31
  4. Gestion Base de Données
    Par deeperpaul dans le forum Excel
    Réponses: 1
    Dernier message: 13/12/2007, 20h51
  5. Classe de gestion de base de données SQLITE
    Par Munkey74 dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 1
    Dernier message: 09/08/2007, 16h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo