Obtenir le nombre de lignes mises à jour avec PreparedStatement
Comment obtenir le nombre de lignes mises à jour avec PreparedStatement?
.getUpdateCount()
renvoie 0.
Pour executeUpdate
a reçu l'erreur:
erreur s'est produite pendant le traitement par lots: lot doit être exécutée ou effacé
mon code:
updTrans = dataSource.getConnection().prepareStatement("update...");
updTrans.setInt(1, Integer.valueOf(transaksjonstatusid));
...
updTrans.addBatch();
upd = updTrans.executeUpdate();
Sur votre dernière modification que vous avez ajouté: updTrans.addBatch(); puis upd = updTrans.executeUpdate() et obtenez une erreur, mais comme BalusC dit, vous devriez être en utilisant int [] updateCounts = stmt.executeBatch(); si vous êtes en utilisant .addBatch();
OriginalL'auteur sergionni | 2010-09-14
Vous devez vous connecter pour publier un commentaire.
Vous devriez être en utilisant
PreparedStatement#executeBatch()
lors de l'utilisation des lots.Elle renvoie un
int[]
contenant de mettre à jour le nombre de chaque lot.La valeur de retour dépendent de l'JDBC mise en œuvre utilisée (plus précisément, le pilote JDBC utilisé). Si vous considérez que c'est faux, par opposition à la documentation de l'API JDBC (ou le pilote JDBC de la documentation spécifique), alors pensez à publier un rapport sur le pilote JDBC vendeur/responsable. Je ne peux pas aller dans les détails car on ne sait pas à celle que vous utilisez.
En général >= 0 les rendements sont les lignes affectées et < 0 les rendements sont les codes d'erreur.
OriginalL'auteur BalusC
Avez-vous essayé d'utiliser:
Ici vous pouvez trouver des explications sur la façon d'utiliser un PreparedStatement.
si executeUpdate() est exécutée dans une transaction alors non, il ne permet pas de valider la transaction
voir mon post édité,merci
La validation peut être mis en place par le biais de la Connexion de l'objet, pas l'état. Vous pouvez utiliser la conn.setAutoCommit(false); l'exécution de votre preparedStatement, puis utiliser la conn.commit(); et la validation automatique true si nécessaire.
ne pas commettre moins d'auto-commit est
true
, je crois. Si vous voulez faire une mise à jour par lot, cependant, vous devriez être en utilisantaddBatch()
etexecuteBatch()
.executeBatch()
retourne unint[]
contenant les nombres de mises à jour pour chaque commande dans le lot.OriginalL'auteur Fanny H.
Voir Le Javadoc
OriginalL'auteur Sean
getUpdateCount
est destiné à être utilisé avec leexecute(String sql)
méthode. Vous avez probablement fait cela:Dans ce cas, vous devez simplement faire
OriginalL'auteur Mr. Shiny and New 安宇