|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Soci (AR)
Messaggi: 842
|
[Java] PreparedStatement e operazioni su DB
Salve,
Stò frequetando un corso di java molto accelerato (purtroppo), ma la mia azienda questo mi passa Nell'ultima sessione mi hanno spiegato la connessione al DB, l'esecuzione delle operazioni fondamentali su DB, il commit/rollback ed altre cosette. Capirete che anche se non sono moltissime cose, per me che non ho mai visto nulla del genere prima d'ora, possano spaesarmi un pochino...anzi...un tantino Rileggendo il codice ho notato che sono presenti due elementi: lo Statement ed il PreparedStaement. Ho capito che ricorrendo all'uso del secondo si ottengono dei benefici in quanto si prepara a priori l'esecuzione di un'istruzione (query) che verrà richiamata successivamente. Però onestamente faccio ancora fatica a capire come, dove e quando è utile ricorrere ad uno anzichè ad un altro, e/o se c'è una regola generale al riguardo. Grazie!
__________________
...Fatti non foste a viver come bruti ma per seguir virtute e canoscenza... ...Excusatio non petita, accusatio manifesta... Bruno Boschi |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Non escludo che ce ne siano altri ma i due benefici a meno noti del prepared statement starebbero nell'evitare lo SQL Injection, cioè l'alterazione della query sql ideale tramite l'uso di stringhe costruite ad hoc, e nella possibilità di usare i tipi di dato Java, lasciando che sia il driver ad operare la conversione in valori SQL.
La prima è una cosa che so per sentito dire e te la rifilo cum grano salis. La seconda è un'evidenza strutturale. E' come dire che al posto di scrivere: INSERT INTO Clienti VALUES ('pippo', 'rossi', 3, 4.25) (probabilmente è sql maccheronico ma facciamo finta che sia sql) posso scrivere: INSERT INTO Client VALUES (nome, cognome, quantità, prezzoUnitario) dove nome e cognome sono String, quantità è un int e prezzoUnitario un BigDecimal. Praticamente è un pelo macchinoso perchè l'impostazione dei valori della query richiede n invocazioni del metodo set (strano che non abbiano usato i varargs). Cioè per usare i tipi Java io devo dire: statement.setString(1, "Pippo"); statement.setString(2, "Rossi"); statement.setInt(3, 3); statement.setBigDecimal(4, new BigDecimal(4.25)); con statement istanza di PreparedStatement. C'è anche la stravaganza dell'indice che parte da 1. Vale la pena di dire che JDBC non si usa. Nel mondo reale ci sono dei framework ad hoc costruiti intorno a JDBC (Hybernate ad esempio) a cui ci si appoggia per gestire la persistenza dei dati in Java.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:59.



















