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

Servlets/JSP Java Discussion :

insertion base de donnée


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 27
    Par défaut insertion base de donnée
    J'insère depuis une servlet dans une table MySQL une liste de valeur.
    Dans cette table j'ai l'ID (clé principale) qui est de type auto increment.
    Au moment de l insert existe t'il une méthode qui me permettrai de récupérer l'ID générer automatiquement ?

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    Il existe une fonction sur les mysql recents, pour recuperer le dernier id créé.

    Sinon passe par les sequences, sinon il faut rester sur le bete INSERT/SELECT

  3. #3
    Membre confirmé Avatar de gamel
    Inscrit en
    Avril 2006
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 128
    Par défaut
    Après avoir fait ton insertion tu peux executer cette requete (sur les dernière versions de MySQL, c'est sûr!)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT LAST_INSERT_ID()

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 29
    Par défaut
    Salut
    (cette question ne serait pas du domaine du PHP plutot ??)
    Puisque ton insertion créé une ligne avec un ID maxi (le plus grand de ta liste), pour récupérer cet ID-là, le mieux à faire (requête SQL compatble avec toute version de MySQL disponible) est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT MAX(ID) FROM table

  5. #5
    Invité de passage
    Inscrit en
    Avril 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 1
    Par défaut j'ai le probléme
    Salut,
    j'ai un probléme de connection entre ma base Mysql avec le netbeans 5.0:
    voici le code:

    import java.awt.GridLayout;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import javax.swing.BoxLayout;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JPasswordField;
    import javax.swing.JTextField;



    /**
    * JDBCConnectionDialog
    * Dialogue pour la connexion à une base de données via JDBC.
    * Permet de saisir les informations de connexion :
    * <blockqoute>
    * <li> nom de l'utilisateur </li>
    * <li> son mot de passe </li>
    * <li> l'url du serveur de la BD </li>
    * <li> le nom du driver JDBC </li>
    * </blockqoute>
    * <P>et de récupérer l'objet java.sql.Connection correspondant
    *
    * @author : Petko Valtchev, Philippe Genoud d'après Philip Milne
    * (SUN Micro Systems).
    */

    public class JDBCConnectionDialog {

    // les différents titres des boutons du dialogue de connexion
    static private String[] optionNames = { "Connect" , "Cancel" };

    // les TextFields pour la saisie des informations de connexion
    private JTextField userNameField;
    private JTextField passwordField;
    private JTextField serverField;
    private JTextField driverField;

    // le Panel regroupant les "widgets" pour la connexion (TextFields
    // et Labels)
    private JPanel connectionPanel;

    /**
    * Création du panel qui contiendra tous les champs d'information pour la connexion.
    * Attention, le dialogue n'est pas affiché. Il ne le sera que lorsque la méthode activate
    * sera invoquée.
    * @param url l'url de la base de donées
    * @param driver le nom de la classe du driver
    * @see #activate
    */
    public JDBCConnectionDialog(String url, String driver) {
    // Création des Labels et des Textfields pour la saisie des informations
    // de connexion
    JLabel userNameLabel = new JLabel("User name: ", JLabel.RIGHT);
    userNameField = new JTextField(20);

    JLabel passwordLabel = new JLabel("Password: ", JLabel.RIGHT);
    passwordField = new JPasswordField(20);

    JLabel serverLabel = new JLabel("Database URL: ", JLabel.RIGHT);
    serverField = new JTextField(url);
    // "jdbc:oracle:thin:@hoff.imag.fr:1521:ufrima" pour oracle sur hopper

    JLabel driverLabel = new JLabel("Driver: ", JLabel.RIGHT);
    driverField = new JTextField(driver);
    // "oracle.jdbc.OracleDriver" pour oracle

    // Création d'un Panel et placement dans celui-ci des Labels
    JPanel namePanel = new JPanel(false);
    namePanel.setLayout(new GridLayout(4, 1));
    namePanel.add(userNameLabel);
    namePanel.add(passwordLabel);
    namePanel.add(serverLabel);
    namePanel.add(driverLabel);

    // Création d'un Panel et placement dans celui-ci des TextFiels
    JPanel fieldPanel = new JPanel(false);
    fieldPanel.setLayout(new GridLayout(4, 1));
    fieldPanel.add(userNameField);
    fieldPanel.add(passwordField);
    fieldPanel.add(serverField);
    fieldPanel.add(driverField);

    // Création d'un Panel regroupant le Panel des Labels et le Panel
    // des TextFiedls
    connectionPanel = new JPanel(false);
    connectionPanel.setLayout(new BoxLayout(connectionPanel,
    BoxLayout.X_AXIS));

    connectionPanel.add(namePanel);
    connectionPanel.add(fieldPanel);

    }

    /**
    * Création du panel qui contiendra tous les champs d'information pour la connexion.
    * Attention, le dialogue n'est pas affiché. Il ne le sera que lorsque la méthode activate
    * sera invoquée.
    * @see #activate
    */
    public JDBCConnectionDialog() {
    this("jdbc:mysql://localhost:3306/Central1","Mysql(MM.MySQL driver)");
    // "jdbc:oracle:thin:@hoff.imag.fr:1521:ufrima" pour oracle sur hopper
    // "oracle.jdbc.OracleDriver" pour oracle
    }

    /**
    * Affiche le dialogue pour la connexion.
    * @return la référence pour l'adpatateur de connexion JDBC si la connexion
    * a été demandée et a réussi, null sinon.
    */
    public Connection activate() {

    Connection connection = null;
    int resdialog;
    // affiche un dialogue modal
    // la valeur retournée correspond au choix fait par l'utilisateur


    resdialog = JOptionPane.showOptionDialog(
    null, // composant parent, ici une Frame par défaut
    connectionPanel, // le contenu du dialogue
    "Connexion JDBC", // titre du dialogue
    JOptionPane.DEFAULT_OPTION,
    JOptionPane.INFORMATION_MESSAGE, // type du message (utilisé pour l'icone du dialogue)
    null, // icone à afficher, ici icone par défaut en fonction du type de message
    optionNames, //tableau de String indiquant les choix possibles pour l'utilisateur
    optionNames[0]); // la selection par defaut pour le dialogue

    if (resdialog == 0)
    {

    try {
    // cherche et charge la classe du driver
    Class.forName(driverField.getText());
    System.out.println("Ouverture de la connexion à la BD");

    // ouverture de la connection
    connection = DriverManager.getConnection(serverField.getText(),
    userNameField.getText(),
    passwordField.getText());

    }
    catch (ClassNotFoundException ex) {
    JOptionPane.showMessageDialog(null, "Classes du driver non trouvées",
    "alert", JOptionPane.ERROR_MESSAGE);
    }
    catch (SQLException ex) {
    JOptionPane.showMessageDialog(null, "Impossible de se connecter à cette BD" +
    "Erreur " + ex.getMessage(),
    "alert", JOptionPane.ERROR_MESSAGE);
    }
    }

    return connection;
    }

    /**
    * retourne l'url désignant la BD pour laquelle la connexion est établie.
    * @return l'url désignant la bd
    */
    public String getDBUrl() {
    return serverField.getText();
    }

    /**
    * programme de Test de la classe JDBCConnectionDialog
    */
    public static void main(String s[]) throws SQLException {

    JDBCConnectionDialog dialConnexion = new JDBCConnectionDialog();
    Connection conn = dialConnexion.activate();
    if (conn == null)
    System.exit(0);
    else {
    System.out.println("Connexion réussie");
    conn.close();
    }
    }

    }


    et j'ai le message suivant: Classes de driver non trouvées
    En plus j'ai fais les etapes suivantes:
    Runtime--> driver -->add driver par la suite j'ai importer: mysql-connector- java-3.1.6-bin.jar et par la suite j'ai selectionné "Connect using" et la connexion est etabli et j'ai eu mes tables.

    Vraiment j'ai besion de votre aide, et je dois rentrer le projet avant fin mai .
    Merci d'avance

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    Salut

    1/ Creer un nouveau sujet aurait été plus adéquat que polluer le sujet d'un autre traitant d'un problème différent.

    2/

    3/
    Classes de driver non trouvées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Class.forName(driverField.getText());
    Tu ne charges pas ton driver car tu rentres une mauvaise valeur.
    Fais un System.out de ce getText pour voir, mais tu devrais avoir com.mysql.jdbc.Driver.

    Mais prends l'habitude de faire au moins e.getMessage dans tes catchs, voir un printStackTrace, comme ca tu aurais vu tout seul l'origine de ton problème !!

  7. #7
    Membre expérimenté Avatar de g0up1l
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 341
    Par défaut
    Citation Envoyé par eriz
    J'insère depuis une servlet dans une table MySQL une liste de valeur.
    Dans cette table j'ai l'ID (clé principale) qui est de type auto increment.
    Au moment de l insert existe t'il une méthode qui me permettrai de récupérer l'ID générer automatiquement ?
    Une méthode élégante est de demander à ta base de crééer un nouvel ID ( à l'aide des générateur ), elle te l'envoie et tu t'en sers pour l'insertion de ton nouvel élément

Discussions similaires

  1. Réponses: 7
    Dernier message: 01/12/2009, 15h10
  2. SQL server Insertion base de donnés
    Par benoit85 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 16/04/2009, 14h21
  3. Insertion base de données
    Par nattyroot dans le forum Accès aux données
    Réponses: 1
    Dernier message: 01/10/2008, 19h52
  4. Problème d'insertion base de donnée Access
    Par hh4life dans le forum Windows Forms
    Réponses: 2
    Dernier message: 28/08/2007, 19h26
  5. [DBExpress] Formulaire d'insertion (Base de donnée)
    Par Nadd dans le forum C++Builder
    Réponses: 14
    Dernier message: 12/07/2007, 10h22

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