MasterDrive.it   
Vai indietro   MasterDrive.it > Software Development > Java



Rispondi
 
Strumenti della discussione Modalità di visualizzazione
Vecchio 11-03-2010, 21:17   #1 (permalink)
Nuovo della community

 
37 Messaggi

domenico066 novizio della comunita' ( + 10 )
Problema con invio di stringhe...jsp

Salve a tutti, avrei un problemino...Ho una form con campi input e textarea,e i dati che inserisce l'utente vengono mandati in un db...il problema e che se io inserisco nella textarea una parola con un aportofo(per esempio se inserisco nell'altro), la servlet non inserisce niente...Il db non è un problema, nel senso che se faccio un inserimento manuale funziona....
Grazie

domenico066 non è in linea   Bookmark and Share Rispondi quotando
Vecchio 12-03-2010, 11:09   #2 (permalink)
Nuovo della community

 L'avatar di andbin
 
29 Messaggi

andbin con qualche commento positivo ( + 50 )
Quote:
Originariamente inviata da domenico066 Visualizza il messaggio
il problema e che se io inserisco nella textarea una parola con un aportofo(per esempio se inserisco nell'altro), la servlet non inserisce niente
Beh, per fare l'inserimento avrai eseguito una query di insert, no? E come hai creato la query? L'hai composta "a mano"??

Se fai es:
String query = "INSERT ....... '" + tuaVar + "' ......";
mi pare scontato/ovvio che se la variabile stringa tuaVar contiene un ' allora "sballa" la query!! (perché chiude prima il valore)

Se usi direttamente JDBC: o usi un PreparedStatement oppure il quoting della stringa ma sopratutto l'escaping dei caratteri speciali è tutto a carico tuo.

Se usi un altro framework/libreria per l'accesso al DB... allora precisa, non lo posso sapere io.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin non è in linea   Bookmark and Share Rispondi quotando
Vecchio 12-03-2010, 14:29   #3 (permalink)
Nuovo della community

 
37 Messaggi

domenico066 novizio della comunita' ( + 10 )
Ti posto la servlet che riachiamo dalla form cosi magari puoi dirmi dove sbaglio

codice:
import java.io.*;
import java.sql.*;
import java.util.*; 
import javax.servlet.*;
import javax.servlet.http.*;

public class ServletAnamnesiProx extends HttpServlet{

 public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

String DRIVER = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/pediatria";



String anamnesi = request.getParameter("anamnesi");

 try {

        Class.forName(DRIVER);
        Connection conn = DriverManager.getConnection(url,"root","1234");
        Statement stmt = conn.createStatement();
        stmt.executeUpdate( "REPLACE INTO anamnesi_pat_prox SET anamnesi='"+anamnesi+"'  ");

      stmt.close();
      conn.close();

 }
catch (Exception ex) {
        System.out.println(ex);

    }
         response.sendRedirect(URL);
}
  

}
Ho lasciato nella servlet solo la stringa che dovrebbe contenere apostrofi o apici
Grazie mille per la risp
domenico066 non è in linea   Bookmark and Share Rispondi quotando
Vecchio 12-03-2010, 15:15   #4 (permalink)
Nuovo della community

 L'avatar di andbin
 
29 Messaggi

andbin con qualche commento positivo ( + 50 )
Quote:
Originariamente inviata da domenico066 Visualizza il messaggio
codice:
stmt.executeUpdate( "REPLACE INTO anamnesi_pat_prox SET anamnesi='"+anamnesi+"'  ");
Eh ... infatti.

Ripeto (meglio) quanto già detto sopra: la composizione fatta "a mano" tramite banale concatenazione di pezzi di stringhe è pericolosa.
Se la variabile anamnesi fa riferimento a es. "nell'altro" il testo complessivo della query diventa:

REPLACE INTO anamnesi_pat_prox SET anamnesi='nell'altro'
Ci sono 3 apici ' nell ' altro '. E ovviamente così è sbagliato.

E lo ripeto ancora: o usi un PreparedStatement oppure devi farti carico tu, usando operazioni di replace o librerie esterne, di fare l'escape dei caratteri speciali come appunto l'apice.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin non è in linea   Bookmark and Share Rispondi quotando
Rispondi

Strumenti della discussione
Modalità di visualizzazione

Regole d'invio
Non puoi inserire discussioni
Non puoi inserire repliche
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è attivo
Le smilies sono attive
Il codice IMG è attivo
il codice HTML è disattivato
Trackbacks are attivo
Pingbacks are attivo
Refbacks are disattivato

Salto del forum


Tutti gli orari sono GMT +2. Attualmente sono le 09:49.


Powered by vBulletin versione 3.8.0
Copyright © 2000 - 2010, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.2.0

Valid XHTML 1.0 Transitional  Creative Commons License

Eccetto dove diversamente specificato, i contenuti pubblicati in questa comunità sono rilasciati sotto Licenza
Creative Commons Attribuzione-Non commerciale-Condividi allo stesso modo 2.5 Italia License.
La comunita' di MasterDrive.it non e' responsabile di eventuali imprecisioni presenti nelle pagine.