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

JDBC Java Discussion :

Insertion en Java avec vérification


Sujet :

JDBC Java

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    212
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 212
    Points : 23
    Points
    23
    Par défaut Insertion en Java avec vérification
    Bonjour,

    Je voudrais faire une insertion dans une table sql à partir de java mais je voudrais avant vérifier l’existence de l'identifiant avant de faire l'insertion.
    Voici le code que je propose
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    @Override
    public void actionPerformed(ActionEvent evt) {
    	if(evt.getSource()==b1){
    		Connection laConnection;
    		ResultSet resultat = null;
    		try
    		{ 
    		Class.forName("com.mysql.jdbc.Driver");
     
    		laConnection =  (Connection) DriverManager.getConnection("jdbc:mysql://localhost/application?useSSL=false","boutheina","30071986"); 
    		 int x= Integer.parseInt(idp.getText());
    		String sql="select Id_prod from produit where Id_prod=x";
    		try {
    			Statement stmt = (Statement) laConnection.createStatement();
     
    			resultat = stmt.executeQuery(sql);
    			if ( resultat.next() ) {
    				 System.out.println("l'indentifiant de produit existe déjà");
     
    			 }
    			else{
     
    				String sql1 = "INSERT INTO produit (Id_prod, designation, quantite,prix) VALUES(?,?,?,?)"; 
     
    				try( PreparedStatement preparedStatement = (PreparedStatement) laConnection.prepareStatement(sql1) ) { //préparation de la requête 
     
    				    preparedStatement.setObject(1,x); //on assigne le login au premier paramètre 
    				    preparedStatement.setObject(2, desi.getText());
    				    int z= Integer.parseInt(qts.getText());
    				    preparedStatement.setObject(3, z);
    				    float y= Float.parseFloat(pri.getText());
    				    preparedStatement.setObject(4, y);
     
     
     
    				    if(preparedStatement.executeUpdate()!=1){
    				    	JOptionPane.showMessageDialog(null, "An error appears in the inscription", 
    		                        "Error Message",
    		                        JOptionPane.ERROR_MESSAGE);}
    				    else{JOptionPane.showMessageDialog(null, "The inscription is done successfully", 
    		                    "Information Message",
    		                    JOptionPane.INFORMATION_MESSAGE);
    				    idp.setText("");
    				    desi.setText("");
    				    pri.setText("");
    				    qts.setText("");
    				    idp.requestFocus();
    				    		}
    				}
     
     
     
    			 catch (SQLException e) {
    			System.out.println("erreur dans la requete select");
    			}
     
     
     
     
    		}
     
     
     
    		}
    		catch
    		(Exception e)
    		{
    		            System.out.print("impossible de se connecter à la base");
     
     
     
    		}
     
    	}
    		catch
    		(Exception e)
    		{
    		            System.out.print("impossible de se connecter à la base");
     
     
     
    		}
    	}
     
     
    	if(evt.getSource()==b2){
    		System.exit(0);
    	}
     
     
    	}
    }

  2. #2
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    salut,
    essaies ceci:
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
      sql = "INSERT INTO produit select ?,?,?,? from dual WHERE NOT EXISTS(select * from produit where Id_prod=?)";
      
    try( PreparedStatement preparedStatement = (PreparedStatement) laConnection.prepareStatement(sql) ) { //préparation de la requête 
     
    				    preparedStatement.setObject(1,x); //on assigne le login au premier paramètre 
    				    preparedStatement.setObject(2, desi.getText());
    				    int z= Integer.parseInt(qts.getText());
    				    preparedStatement.setObject(3, z);
    				    float y= Float.parseFloat(pri.getText());
    				    preparedStatement.setObject(4, y);
     preparedStatement.setObject(5, x);
     
     
     
    				    if(preparedStatement.executeUpdate()!=1){
    				    	JOptionPane.showMessageDialog(null, "An error appears in the inscription", 
    		                        "Error Message",
    		                        JOptionPane.ERROR_MESSAGE);}
    				    else{JOptionPane.showMessageDialog(null, "The inscription is done successfully", 
    		                    "Information Message",
    		                    JOptionPane.INFORMATION_MESSAGE);
    				    idp.setText("");
    				    desi.setText("");
    				    pri.setText("");
    				    qts.setText("");
    				    idp.requestFocus();
    				    		}
    				}
     
     
     
    			 catch (SQLException e) {
    			System.out.println("erreur dans la requete select");
    			}
     
     
     
     
    		}
     
     
     
    		}
    		catch
    		(Exception e)
    		{
    		            System.out.print("impossible de se connecter à la base");
     
     
     
    		}
    eric

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    212
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 212
    Points : 23
    Points
    23
    Par défaut
    Bonjour,

    J'ai essayé votre code mais l'erreur suivante est affiché
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at Distributeur.add_Product.actionPerformed(add_Product.java:146)

    donc l'erreur est au niveau de la requete que j'ai pas bien compris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     sql = "INSERT INTO produit select ?,?,?,? from dual WHERE NOT EXISTS(select * from produit where Id_prod=?)";
    qu'est ce que vous désignez lorsque vous dite insert into ..... select from dual

  4. #4
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    salut,
    peux-tu remplacer ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    catch (SQLException e) {
    			System.out.println("erreur dans la requete select");
    			}
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    catch (SQLException e) {
    			System.out.println("erreur dans la requete select " + e.getMessage());
    			}
    ainsi que ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    catch
    		(Exception e)
    		{
    		            System.out.print("impossible de se connecter à la base");
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    catch
    		(Exception e)
    		{
    		            System.out.print("impossible de se connecter à la base " + e.getMessage());
    ensuite executes et donnes nous toute la trace de l´erreur affichée.

    eric

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    212
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 212
    Points : 23
    Points
    23
    Par défaut
    ça va le pb est résolu voici le code après quelques modifications.
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    @Override
    public void actionPerformed(ActionEvent evt) {
    	Connection laConnection;
    	if(evt.getSource()==b1){
    		try
    		{
    		Class.forName("com.mysql.jdbc.Driver");
     
    		laConnection =  (Connection) DriverManager.getConnection("jdbc:mysql://localhost/application?useSSL=false","boutheina","30071986"); 
     
    		String  sql = "INSERT INTO produit select ?,?,?,? from dual WHERE NOT EXISTS(select * from produit where Id_prod=?)";
     
     
    		try( PreparedStatement preparedStatement = (PreparedStatement) laConnection.prepareStatement(sql) ) { //préparation de la requête 
    			                int x= Integer.parseInt(idp.getText());
    		  				    preparedStatement.setObject(1,x); //on assigne le login au premier paramètre 
    		  				    preparedStatement.setObject(2, desi.getText());
    		  				    int z= Integer.parseInt(qts.getText());
    		  				    preparedStatement.setObject(3, z);
    		  				    float y= Float.parseFloat(pri.getText());
    		  				    preparedStatement.setObject(4, y);
    		   preparedStatement.setObject(5, x);
     
     
     
    		  				    if(preparedStatement.executeUpdate()!=1){
    		  				    	JOptionPane.showMessageDialog(null, "An error appears in the inscription: the ID of the product already exist ", 
    		  		                        "Error Message",
    		  		                        JOptionPane.ERROR_MESSAGE);}
    		  				    else{JOptionPane.showMessageDialog(null, "The inscription is done successfully", 
    		  		                    "Information Message",
    		  		                    JOptionPane.INFORMATION_MESSAGE);
    		  				    idp.setText("");
    		  				    desi.setText("");
    		  				    pri.setText("");
    		  				    qts.setText("");
    		  				    idp.requestFocus();
    		  				    		}
    		  				}
     
     
     
    		  			 catch (SQLException e) {
    		  			System.out.println("erreur dans la requete select");
    		  			}
     
     
     
     
    		  		}
    		catch
    		(Exception e)
    		{
    		            System.out.print("impossible de se connecter à la base");
     
    		} 
     }

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

Discussions similaires

  1. probleme d'insertion dans mysql avec java
    Par hypothese dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 26/09/2008, 12h02
  2. SQL Server 2005 - ETL - Insertion données avec vérification.
    Par Mailgifson dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/12/2007, 12h22
  3. insertion des blob avec LOAD DATA...
    Par orli1x51 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 27/10/2003, 18h05
  4. Exécutable Java avec JRE intégré
    Par clawhammer dans le forum JBuilder
    Réponses: 2
    Dernier message: 06/10/2003, 16h26
  5. Réponses: 2
    Dernier message: 26/05/2003, 19h42

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