Visualizzazione dei risultati da 1 a 4 su 4

Discussione: servlet jdbc con mysql

  1. #1
    Utente di HTML.it L'avatar di ty7
    Registrato dal
    Jun 2004
    Messaggi
    42

    servlet jdbc con mysql

    Qualcuno mi riesce a spiegare cosa non va nella mia servlet?
    Ci sto impazzendo!!!

    codice:
    import javax.servlet.*;
    import javax.servlet.http.*;
    import javax.swing.*;
    import java.io.*;
    import java.util.*;
    import java.sql.*;
    
    public class InserisciCalciatore extends HttpServlet
    {
     public void service
     (HttpServletRequest req, HttpServletResponse res)
     throws IOException
     {
      res.setContentType("text/html");
      PrintWriter out = res.getWriter();
      String cc=req.getParameter("cognome_calciatore");
      String nc=req.getParameter("nome_calciatore");
      String gn=req.getParameter("giorno_nascita");
      String mn=req.getParameter("mese_nascita");
      String an=req.getParameter("anno_nascita");
      String ln=req.getParameter("luogo_nascita");
      String pn=req.getParameter("provincia_nascita");
      String ic=req.getParameter("indirizzo_calciatore");
      String t1c=req.getParameter("telefono1_calciatore");
      String t2c=req.getParameter("telefono2_calciatore");
      String t3c=req.getParameter("telefono3_calciatore");
    
      String query="INSERT INTO calciatori VALUES ('"+cc+"','"+nc+"','"+gn+"','"+mn+"','"+an+"','"+ln+"','"+pn+"','"+ic+"','"+t1c+"','"+t2c+"','"+t3c+"')";
    
      String dbUrl="jdbc:mysql://localhost:3306/db_archiviocalciatori";
      String user="***";
      String password="***";
      try
      {
       Class.forName("org.gjt.mm.mysql.Driver");
       Connection c = DriverManager.getConnection(dbUrl,user,password);
       Statement s=c.createStatement();
       ResultSet r=s.executeQuery(query);
    
       while(r.next())
       {
       out.println("CALCIATORE INSERITO");
       }
       s.close();
      }
      catch (Exception e)
      {
       out.println("ERRORE NELLA QUERY:"+e);
      }
     }
    }
    Quando invio i dati tramite il form che si riferisce a questa classe, continuo ad avere l'errore:
    java.sql.SQLException: ResultSet is from UPDATE. No Data
    Ho provato anche a cambiare il driver sql con Class.forName("com.mysql.jdbc.Driver"); ma il risultato è stato un altro errore java.sql.SQLException: Can not issue data manipulation statements with executeQuery()
    Non so dove sbattere la testa: AIUTO!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,319
    Credo che il problema stia nel fatto che stai tentando di fare una cosa che non puoi: stai cercando di eseguire una INSERT (query di aggiornamento) utilizzando un metodo che server per eseguire delle SELECT (query di interrogazione). Inoltre stai cercando di avere un risultato dalla INSERT (che di solito è il numero di righe inserite e non certo un ResultSet dei dati inseriti).
    Dovresti, secondo me, modificare l'istruzione
    codice:
    ResultSet r=s.executeQuery(query);
    con questa
    codice:
    int num = s.executeUpdate(query);
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di ty7
    Registrato dal
    Jun 2004
    Messaggi
    42
    Ho scoperto che nonostante l'errore il database viene comunque aggiornato. Mistero...
    Comunque grazie mille per il consiglio, adesso ci provo.
    Ciao

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,319
    Sì... effettivamente per il DB non c'è differenza fra una query di aggiornamento e una query di interrogazione: lui deve solo eseguire il comando. Cambia solamente la semantica ad un più alto livello di astrazione (come si presenta Java): qui la semantica ha più importanza e l'errore viene rilevato, nonostante il comando venga eseguito dal DB.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.