PDA

Visualizza la versione completa : servlet jdbc con mysql


ty7
11-10-2004, 17:02
Qualcuno mi riesce a spiegare cosa non va nella mia servlet?
Ci sto impazzendo!!! :dh:


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! :cry:

LeleFT
11-10-2004, 19:11
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


ResultSet r=s.executeQuery(query);

con questa


int num = s.executeUpdate(query);


Ciao. :ciauz:

ty7
12-10-2004, 10:44
Ho scoperto che nonostante l'errore il database viene comunque aggiornato. Mistero...
Comunque grazie mille per il consiglio, adesso ci provo.
Ciao
:zizi:

LeleFT
12-10-2004, 14:13
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. :ciauz:

Loading