2016-09-30 5 views
0

J'utilise prepareStatement.executeUpdate() pour insérer des lignes dans la base de données mais cela ne fonctionne pas. Cependant, quand je débogue, la valeur est 1, ce qui signifie que la ligne a été insérée, mais quand je vérifie la base de données, elle n'insère aucune ligne. Je ne sais pas pourquoi cela se passe. Toute forme d'aide serait appréciée. Ci-dessous est mon code:La méthode executeUpdate ne fonctionne pas correctement

Connection connection = null; 
PreparedStatement preparedStatement = null; 

try { 
    connection = getOracleConnection(requestId); 
    preparedStatement = connection.prepareStatement(createAndSaveSummarySQL()); 
    preparedStatement.setString(1, siteId); 
    preparedStatement.setString(PBNConstants.TWO, taskId); 
    preparedStatement.setString(PBNConstants.THREE, notificationType); 
    preparedStatement.setString(PBNConstants.FOUR, clusterId); 


    final long insertStartTime = System.currentTimeMillis(); 

    final int returnValue = preparedStatement.executeUpdate(); 
+0

Vous utilisez un cache, vous effectuez une restauration après l'insertion? Comment vérifiez-vous si la ligne est insérée? mybe vous avez différentes connexions db? – Jens

+1

S'il vous plaît Afficher la capture .. enfin ... bloquer – Jens

+2

s'il vous plaît ajouter l'exception que vous obtenez. –

Répondre

0

Veuillez vous assurer que la connexion est fermée correctement comme ci-dessous.

try { 
      connection = getOracleConnection(requestId);  

    }finally{ 
    if (preparedStatement != null) preparedStatement.close(); 
     if (connection != null) connection.close(); 
    } 
+0

@Jen Bonjour, merci d'avoir répondu. Je ferme la connexion correctement à la fin. Encore une chose, je vérifie l'insertion pendant le débogage. Donc final int returnValue = preparedStatement.executeUpdate(); renvoie une valeur de 1 pendant le débogage, mais juste après, lorsque je vérifie la base de données, je ne vois aucune ligne insérée. La chose étrange est immédiatement j'inspecte cette déclaration et il me donne une erreur qui indique "la violation de contrainte d'intégrité unique de SQL" ainsi croient qu'une rangée est insérée mais je ne la vois pas. Un peu de comportement étrange que je vois, mais pas arriver à une conclusion –

+0

if (! Connexion = null) { \t \t \t try { \t \t \t \t connection.close(); \t \t \t} catch (SQLException e final) { \t \t \t \t \t \t \t} \t \t} –

+0

@Rohit - je ne suis pas une exception. C'est juste que la ligne n'est pas insérée et que mon application échoue car après l'insertion je mets à jour cette ligne en fonction de header_id et elle échoue pendant la mise à jour car elle ne trouve aucune ligne à mettre à jour. –