2011-03-15 3 views
3

Je reçois ce BatchUpdateException d'une déclaration stmt.executeBatch():Que signifie cette BatchUpdateException?

BatchUpdateException: A resultset was created for update 

L'Internet ne dispose d'aucune information sur ce message d'exception. Qu'est-ce que ça veut dire? La traceback ne contient rien d'autre que l'échec d'une procédure stockée.

Répondre

8

je aimerais interpréter le message en ce sens qu'une instruction SQL que vous avez ajouté via addBatch() a produit un ResultSet, ce qui signifie que ce n'est pas votre déclaration normale INSERT, UPDATE ou DELETE.

Les instructions qui doivent renvoyer des résultats ne peuvent pas être exécutées par lots avec JDBC.

Le JDBC Tutorial (sous la rubrique « Gestion des exceptions Mise à jour batch ») confirme:

Vous obtiendrez un BatchUpdateException lorsque vous appelez la méthode executeBatch si (1) l'une des instructions SQL ajoutées au batch produit un ensemble de résultats (généralement une requête) ou (2) l'une des instructions SQL du lot ne s'exécute pas correctement pour une autre raison.

Vous semblez courir dans le cas 1 ici.

+0

Un excellent travail de détective! –

1

Une mise à jour par lots comprend plusieurs instructions d'insertion/de mise à jour/de suppression qui sont traitées ensemble par la base de données. Ceci est habituellement fait pour des raisons de perfomance. 1x 1000 inserts est beaucoup plus rapide que 1000 x 1 insert. Une exception BatchUpdateException signifie que 1 (ou plusieurs) instructions a échoué le plus souvent en raison d'une violation de contrainte. Vous devrez regarder la procédure stockée pour voir ce qu'elle a fait. Mayby votre dba peut vous donner plus d'informations sur ce qui s'est mal passé.

+0

C'est l'une des raisons d'une 'BatchUpdateException', il semble voir l'autre (voir ma réponse). –

0

J'ai supprimé une colonne de la table. Lorsque j'ai essayé d'insérer des enregistrements dans cette table, je recevais BatchUpdateException.

Après avoir exécuté la commande ci-dessous le problème résolu obtenu

REORG TABLE TABLE_NAME

+0

cela ne répond pas vraiment aux questions telles qu'elles étaient: _ "Que signifie BatchUpdateException?" _ – benka