2013-05-18 17 views
18

Ho una domanda relativa a questo metodo: st.execute(sql); dove st è ovviamente un oggetto Statement. Direttamente dal this Java Oracle tutorial:Statement.execute (sql) vs executeUpdate (sql) ed executeQuery (sql)

eseguire: Restituisce vero se il primo oggetto che la query restituisce è un oggetto ResultSet. Utilizzare questo metodo se la query può restituire uno o più oggetti ResultSet. Recupera gli oggetti ResultSet restituiti dalla query chiamando ripetutamente Statement.getResutSet.

Cosa si intende per "uno o più oggetti ResultSet"? Come è possibile gestirli una volta ottenuto un array di ResultSet? Considerando che st.executeQuery(sql) e st.executeUpdate(sql) sono molto chiari. Non è (almeno per me) l'obiettivo di st.execute(sql) che può anche restituire un int come se fosse stata aggiornata una tabella.

Grazie in anticipo

risposta

8

cosa si intende per "uno o più oggetti ResultSet"?

Javadoc per il metodo execute dice questo:.

"esegue il dato istruzione SQL, che può restituire risultati multipli In alcune situazioni (non comune), una singola istruzione SQL può restituire risultato multipla set e/o conteggi di aggiornamento. Normalmente è possibile ignorare questo se non si è (1) l'esecuzione di una stored procedure che si sa può restituire risultati multipli o (2) che si sta eseguendo in modo dinamico una stringa SQL sconosciuta. "

Questo praticamente lo spiega. A volte una query può fornire più di uno ResultSet.

se sì come è possibile gestirli una volta ottenuto un array di ResultSet?

io non sono sicuro di quello che vuoi dire, ma:

  • non è possibile ottenere loro come un array: è necessario ottenere uno alla volta, e
  • si potrebbe mettere il ResultSets in un array ...

non è (almeno per me) l'obiettivo di st.execute (SQL) che può anche restituire un int come se è stato aggiornato un tavolo.

Un uso di execute è quello di eseguire un'istruzione SQL se non si sa se si tratta di una query, un aggiornamento (di qualche tipo) ... o qualcos'altro che fornisce potenzialmente più set di risultati. È una generalizzazione di executeQuery() e executeUpdate() ...

+1

(Nota per i redattori - ho deliberatamente utilizzare i blocchi di citazione e corsivo insieme per roba che viene citato da un documento definitivo, e basta citare blocchi per le citazioni dalla domanda o dai commenti originali, per favore non interferire con la formattazione Se hai problemi a leggere il corsivo nel tuo browser, cambia i caratteri di default o la dimensione del testo ...) –

3

booleana execute(): esegue l'istruzione SQL in questo oggetto Statement preparati, che può essere qualsiasi tipo di istruzione SQL.

ResultSet executeQuery(): Esegue la query SQL in questo oggetto Statement preparati e restituisce l'oggetto ResultSet generato dalla query.

int executeUpdate(): Esegue SQL in questo oggetto Statement preparati, che deve essere uno SQL INSERT, UPDATE o DELETE; o un'istruzione SQL che non restituisce nulla, come un'istruzione DDL.

Il posto migliore per trovare le risposte a domande come questa è la Javadocs: Here

+0

Il link per javadocs dovrebbe essere http: // docs. oracle.com/javase/8/docs/api/java/sql/PreparedStatement.html –