sql >> Databáze >  >> RDS >> Sqlserver

Co to znamená, když Statement.executeUpdate() vrátí -1?

Protože provedený příkaz ve skutečnosti není DML (např. UPDATE , INSERT nebo EXECUTE ), ale kus T-SQL, který obsahuje DML, mám podezření, že to není považováno za aktualizační dotaz.

Část 13.1.2.3 specifikace JDBC 4.1 něco uvádí (poněkud těžko interpretovatelné, mimochodem):

Vzhledem k těmto informacím předpokládám, že executeUpdate() interně provede execute() a poté - jako execute() vrátí false - vrátí hodnotu getUpdateCount() , který v tomto případě - v souladu se specifikací JDBC - vrátí -1 .

To je dále potvrzeno skutečností 1), že Javadoc pro Statement.executeUpdate() říká:

A 2) že Javadoc pro Statement.getUpdateCount() specifikuje:

Jen pro upřesnění:vzhledem k Javadoc pro executeUpdate() chování je pravděpodobně špatné, ale lze jej vysvětlit.

Jak jsem také komentoval jinde, -1 může jen naznačovat:možná se něco změnilo, ale prostě nevíme, nebo nemůžeme uvést přesný počet změn (např. protože v tomto příkladu je to kus T- SQL, který je spuštěn).



  1. vyhledejte nejbližší polohu podle zeměpisné šířky a délky v postgresql

  2. Psaní komplexního MySQL dotazu

  3. Vložit do tabulky s příkazem select plus další sloupec v SQL Server 2008

  4. SQLException:Porušení protokolu. Problém s ovladačem Oracle JDBC