Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [JSP] input per db

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    92

    [JSP] input per db

    Dovrei inserire nel db un valore prelevato da una cella di testo. Per fare ciò dopo aver cliccato sul bottone di conferma chiamo una funzione che ha come input un attributo chiamato stringa.
    Ho verificato che stringa contenga veramente ciò che voglio ma cosa devo mettere al posto di '?'

    <%statement.executeUpdate("INSERT into TAB (a,b,c) values ('?','b','c')");%>

    Ho provato a chiudere e riaprire i tag <%, a utilizzare il carattere + e il carattere =, ma niente.

    Cosa devo fare? grazie dell'aiuto

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    35
    Il '?' indica un valore variabile nel comando sql.
    Dovrai utilizzare quindi un PreparedStatement invece di uno Statement e prima di eseguire la query impostarne il valore con il metodo appropriato.
    codice:
    preparedstatement.setShort(index, value);
    preparedstatement.setString(index, value);
    Nell'esempio ci sono solo short e string, ma c'è un metodo per ogni tipo di dato.
    L'index indica quale ? deve sostituire; nel tuo caso è 1 (la numerazione NON parte da zero), ma potresti metterne tanti quanti campi devi inserire.

    Nel tuo caso, dovrai impostare il valore del campo 'a'

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    92
    Grazie per la risposta, ma purtroppo non intendevo fare quello
    Il codice è il seguente


    <%@ page import="java.sql.*" %>
    <%! String DRIVER = "com.mysql.jdbc.Driver";
    String DB_URL = "jdbc:mysql://localhost:3306/mysql?user=root&password=poli";
    %>
    <html>
    <body>
    <h1>Accesso ad un database MySQL</h1>
    <INPUT type="text" size="18" name="t" value="">
    <input type="button" value="ok" onClick="calcolaLunghezza(t.value)">


    <script language="JavaScript">

    String CodificaApici(Strings) {Stringcodifica="";
    for(inti=0; i<s.length(); i++)
    if(s.charAt(i)=='\'')
    codifica+="''";
    else codifica+=s.charAt(i);
    return codifica;}

    function calcolaLunghezza(stringa)
    {
    var n = stringa.length
    if(n<3)
    alert("Inserire almeno 3 caratteri")
    else{

    <%
    Class.forName(DRIVER);

    Connection connection = null;
    try {
    connection =DriverManager.getConnection(DB_URL);

    Statement statement = connection.createStatement();
    try{


    statement.executeUpdate("INSERT into sqp (id,nome,citta) values ("+CodificaApici(stringa)+",'ba','c')");
    }catch(Exception e){
    %>
    <!--
    (!alert("Duplicazione chiave"))
    //-->


    <% }}

    catch (SQLException e) {

    %>Eccezione: <%= e.toString() %><%
    } finally {
    if (connection != null) connection.close(); }
    %>

    }
    }
    </script>
    </body> </html>



    voglio che mi inserisca nel db un valore che gli ho dato in input nella casella di testo.
    Ho trovato in giro la funzione che mdifica gli apici, ma non sembra funzionare.
    Cosa metto nella chiamata alla funzione? credo che manchi quache carattere tipo i <%

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    35
    Credo di aver capito quale sia il problema.
    Il fatto è che Java viene eseguito lato server e JavaScript lato client, quindi, quando richiami la funzione JavaScript alla pressione del tasto la parte Java è già stata eseguita e non puoi rieseguirla dal client.
    Una possibile soluzione è:

    crei una form con i campi dei dati che devi inserire e nella action puoi mettere anche la pagina stessa (o una nuova se preferisci).
    Alla pressione del tasto di conferma richiami la funzione JavaScript che hai e se i dati sono corretti fai la submit della form.

    Nella pagina che hai messo nella action devi controllare con Java se l'attributo o gli attributi sono valorizzati (i nomi degli attributi sono i nomi/id degli elementi della form), in tal caso puoi eseguire l'inserimento, che avverrà lato server e non lato client.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.