2017-08-03 5 views
0

J'ai une table qui contient deux colonnes CODE où il y a tout le code à barres et VARIABLE initialisé à 0 au début. Je dois mettre à jour la table quand je scanne le code barre, je dois ajouter 1 à la variable, quand je la scanne deux fois VARIABLE = 2 .... J'ai essayé de le faire comme ça mais ça ne marche pas. Peut-on aider quelqu'un ?Mise à jour de la table SQL

String query = "INSERT INTO TABLE (CODE,VARIABLE) VALUES(?,?) ON DUPLICATE KEY UPDATE VARIABLE='"+VARIABLE+1+"'"; 

       try { 
        if (connect != null) { 
          PreparedStatement statement = connect.prepareStatement(query); 
         statement.setString(1, "%" + res + "%"); 
         statement.setInt(2,VARIABLE); 

         r=statement.executeQuery(); 
         if (r.next()) { 
          message = "Updated"; 
          String code = r.getString("CODE"); 
          int var = r.getInt("VARIABLE"); 
          INFOSOMME.setText(message); 
          INFOSOMME.setText(code); 
          INFOSOMME.setText(var); 
         } else { 
          message = "Error"; 
          INFOSOMME.setText(message); 
         } 
        } else { 
         message = "Error in connection with SQL server"; 
         INFOSOMME.setText(message); 

        } 

       } catch (SQLException e) { 
        etat = false; 
        message = "Got an exception!"; 
        System.err.println(e.getMessage()); 
       } 


      } 
     }); 

ERREUR: 08-03 09: 43: 44,966 30393-30393/com.example.practicas.myapplication W/System.err: sintaxis incorrecta cerca de la palabra clave 'ON'.

J'ai essayé de changer la requête à Chaîne query = "INSERER DANS TABLE (CODE, VARIABLE) VALEURS (?, 0);" + "Mettre à jour TABLE SET VARIABLE = VARIABLE + 1 WHERE CODE LIKE?"; et j'ai eu cette erreur /System.err: La méthode executeQuery doit renvoyer un ensemble de résultats.

+0

après un message d'erreur si vous obtenez une erreur? – akhilesh0707

+0

Avez-vous essayé VARIABLE + 1 pour mettre() ainsi (VARIABLE + 1)? – cotnic

+0

Donner [cette réponse] (https://stackoverflow.com/a/2718352/469080) un aller, je pense que c'est ce dont vous avez besoin. Fondamentalement 'INSERT OR IGNORE' votre code à barres, puis' UPDATE' la valeur dans une déclaration subséquente. –

Répondre

0

Essayez d'exécuter la commande SQL suivante:

String query = "INSERT INTO TABLE (CODE,VARIABLE) VALUES(?,?) ON DUPLICATE KEY UPDATE VARIABLE=(VARIABLE+1)"; 
+0

Merci pour votre réponse mais je reçois toujours la même erreur – Mimi

+0

essayez à nouveau avec au lieu de "VARIABLE = (VARIABLE + 1)" vous entrez "VARIABLE = (VALEURS (VARIABLE) +1)" – cotnic

+0

même erreur encore – Mimi

0

J'ai posté un commentaire mais mieux ici, je suppose:

executeNonQuery

Mises à jour et insertions ne renvoient pas des données, donc vous ne devez pas utiliser executeQuery avec eux (ce qui renvoie des informations en dehors de la quantité de lignes affectées)

+0

@Mimi l'a fait travail? Si oui, notez-le comme une réponse acceptée, sinon, faites le nous savoir afin de vous aider davantage. –

+0

Merci beaucoup pour votre réponse. J'ai changé la requête Chaîne query = "Mettre à jour TABLE SET VARIABLE = VARIABLE + 1 WHERE CODE LIKE?"; et il fonctionne. Plus d'erreurs – Mimi