Partage
  • Partager sur Facebook
  • Partager sur Twitter

Communication Java - base de donnée sql

    25 février 2023 à 9:48:51

    Bonjour,

    Je suis assez nouveau dans le langage java. Je cherche à créer une petite appli android pour me former. Je me tourne vers vous car je rencontre un problème que je n'arrive pas à résoudre.

    Voilà la page sur laquelle je bloque:

    Voilà le fonctionement global:

    sur la page précédente, l'utilisateur choisi dans 2 liste déroulantes un nom que j'enregisre dans la vaiable 'chauffeurChoisi' et une immatriculation que j'enregistre dans la variable 'immatriculationChoisie'.

    Ensuite, tout est expliqué à travers des commentaires.

    package com.example.tournee;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.sql.Timestamp;
    import java.util.Date;
    
    public class ImpressionRamassageActivity extends AppCompatActivity {
    
        // Déclaration des variables des éléments de l'interface utilisateur
        private Button btnImpression;
        private EditText edtChauffeur, edtImmatriculation, edtCodeClient, edtNbChariots;
    
        // Déclaration des variables pour stocker les données saisies par l'utilisateur
        private String chauffeurChoisi, immatriculationChoisie, codeClient, nbChariots;
    
        // Déclaration des informations pour la connexion à la base de données MySQL
        private static final String DATABASE_URL = "jdbc:mysql://82.65.xxx.xxx:3306/tournee";
        private static final String DATABASE_USER = "admin";
        private static final String DATABASE_PASSWORD = "admin";
    
        // Déclaration de la connexion à la base de données
        private Connection connection;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_impression_ramassage);
    
            // Récupération des éléments de l'interface utilisateur
            btnImpression = findViewById(R.id.btn_impression);
            edtChauffeur = findViewById(R.id.edt_chauffeur);
            edtImmatriculation = findViewById(R.id.edt_immatriculation);
            edtCodeClient = findViewById(R.id.edt_code_client);
            edtNbChariots = findViewById(R.id.edt_nb_chariots);
    
            // Ajout d'un écouteur d'événements pour le bouton "Impression"
            btnImpression.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    // Récupération des données saisies par l'utilisateur
                    chauffeurChoisi = edtChauffeur.getText().toString();
                    immatriculationChoisie = edtImmatriculation.getText().toString();
                    codeClient = edtCodeClient.getText().toString();
                    nbChariots = edtNbChariots.getText().toString();
    
                    try {
                        // Connexion à la base de données MySQL
                        connection = DriverManager.getConnection(DATABASE_URL, DATABASE_USER, DATABASE_PASSWORD);
    
                        // Enregistrement des variables dans la table "ramassage"
                        PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO ramassage (CODE, nb_chariot, date, chauffeur, vehicule) VALUES (?, ?, ?, ?, ?)");
    
                        // Définition des paramètres pour la requête préparée
                        preparedStatement.setInt(1, Integer.parseInt(codeClient));
                        preparedStatement.setInt(2, Integer.parseInt(nbChariots));
                        Timestamp date = new Timestamp(new Date().getTime());
                        preparedStatement.setTimestamp(3, date);
                        preparedStatement.setString(4, chauffeurChoisi);
                        preparedStatement.setString(5, immatriculationChoisie);
    
                        // Exécution de la requête préparée
                        preparedStatement.executeUpdate();
    
                        /// Vérification si la table existe
                        boolean tableExists = false;
                        Statement statement = connection.createStatement();
                        ResultSet resultSet = statement.executeQuery("SHOW TABLES LIKE '" + immatriculationChoisie + "'");
                        if (resultSet.next()) {
                            tableExists = true;
                        }
    
                        // Si la table existe, mettre à jour les valeurs
                        if (tableExists) {
                            String updateQuery = "UPDATE " + immatriculationChoisie + " SET chauffeur = ?, code_client = ?, nb_chariots = ? WHERE id = 1";
                            preparedStatement = connection.prepareStatement(updateQuery);
                            preparedStatement.setString(1, chauffeurChoisi);
                            preparedStatement.setInt(2, Integer.parseInt(codeClient));
                            preparedStatement.setInt(3, Integer.parseInt(nbChariots));
                            int updateResult = preparedStatement.executeUpdate();
                        }
                        // Si la table n'existe pas, la créer et insérer les valeurs
                        else {
                            String createTableQuery = "CREATE TABLE " + immatriculationChoisie + " (id INT PRIMARY KEY, chauffeur VARCHAR(255), code_client INT, nb_chariots INT)";
                            statement.executeUpdate(createTableQuery);
    
                            String insertQuery = "INSERT INTO " + immatriculationChoisie + " (id, chauffeur, code_client, nb_chariots) VALUES (?, ?, ?, ?)";
                            PreparedStatement preparedStatement2 = connection.prepareStatement(insertQuery);
                            preparedStatement2.setInt(1, 1);
                            preparedStatement2.setString(2, chauffeurChoisi);
                            preparedStatement2.setInt(3, Integer.parseInt(codeClient));
                            preparedStatement2.setInt(4, Integer.parseInt(nbChariots));
                            int insertResult = preparedStatement2.executeUpdate();
                        }
    
    
                        // Fermer la connexion et l'instruction
                        connection.close();
                        statement.close();
                    } catch (SQLException e) {
                        throw new RuntimeException(e);
                    }
                }
            })
                    ;
        }
    }
    
    



    Je vais vous détailler mon problème:

    Lorsque je clique sur le bouton 'impression', l'appli se ferme on me fait revenir à la page précédente. Dans les 2 cas rien n'est enregistré dans ma base de donnée.

    Merci d'avance à ceux qui prendront le temps de me répondre.

    • Partager sur Facebook
    • Partager sur Twitter
      5 avril 2023 à 14:26:14

      C'est du code que tu as trouver par petit bout sur internet ? 
      Pour Android je ne connais pas trop, mais je sais qu'en java ( web ou app ) c'est n'est pas du tout comme ça que l'on gère la bdd. . .
      • Partager sur Facebook
      • Partager sur Twitter
        7 avril 2023 à 14:31:22

        Peux tu nous montrer tes logs ?

        Bonjour

        • Partager sur Facebook
        • Partager sur Twitter

        Communication Java - base de donnée sql

        × 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