Que signifie l'Énoncé.executeUpdate() retourne -1?

Une requête qui fonctionne dans la gestion de l'atelier et dans le executeUpdatefait que même executeUpdate retour -1, ce qui n'est pas défini dans les documents que nous pouvons trouver. Son censé retourner uniquement le nombre de lignes ou de 0. Qu'est-ce que cela signifie? Le pilote JDBC-ODBC bridge si ce qui compte.

Exemple:

String query = "IF NOT EXISTS (SELECT * FROM animals WHERE animal_name ='" + a +"') INSERT INTO " + table + " (animal_name, animal_desc, species_id) VALUES ('" + a + "', '" + b + "', " + c + ")";
int result = statement.executeUpdate(query);
System.out.println(result);

La requête fonctionne, que la ligne est ajoutée à la base de données, c'est juste étrange qu'il renvoie -1 où la documentation dit qu'elle ne retourne 0 ou le nombre de lignes (comme je l'ai été corrigées).

Mise à JOUR:

L'exécution de cette dans Management Studio résultats avec "la Commande s'est terminée correctement."

IF NOT EXISTS (SELECT * FROM animals WHERE animal_name = 'a') 
INSERT INTO animals(animal_name, animal_desc, species_id) VALUES ('a', 'a', 1)

Qui devrait signifier la méthode doit retourner 0, car il ne retourne rien, c'est exact?

  • Pouvez-vous nous donner un morceau de code montrant ce?
  • Je serais très intéressé de voir votre code. Et vous êtes un peu incorrect, quand vous dites, executeUpdate(...) est censé renvoyer seulement de 1 ou de 0...il retourne en fait, soit (1) le nombre de lignes de SQL Langage de Manipulation de Données (DML) ou (2) 0 pour les instructions SQL qui renvoie rien
  • ne peut pas être -1. Le executeUpdate() renvoie le nombre de lignes de commandes INSERT, UPDATE ou DELETE, ou 0 pour les instructions SQL qui renvoie rien
  • ne vous utilisez Microsoft SQL?
  • Mise à jour de la question avec le code et les corrections.
  • La base de données?
  • Oui, nous sommes à l'aide de SQL Server 2008.
  • utilisez-vous le getUpdateCount() n'importe où dans votre code?
  • Vous devriez vraiment envisager d'afficher votre plus récente édition comme une réponse.
  • Fait.
  • Cela m'est juste arrivé. Quelqu'un a modifié le grant de la procédure que mon appel et j'ai perdu l'appel d'autorisation sur cette procédure. La connexion avec la base de données est ok, mais lorsque j'ai invoqué la procédure par le Serveur d'Application, qu'il a enregistré l'-1 comme le résultat de la cstmResult: int cstmResult = mstc.executeUpdate(); Heureusement, il était facile de déceler la cause en raison de la journalisation des fichiers: L'autorisation d'EXÉCUTION a été refusée sur l'objet '...'

InformationsquelleAutor ldam | 2012-09-13