ok...risolto il problema della connessione, messa in una classe a parte e funziona,inserisce i voti del sondaggio nel db,ma ora sorge un altro problema. vorrei vedere i risultati dei voti, credo funzioni,ma nn visualizza la pagina.
questa la classe per la connessione e la query;
codice:
package beans;
import java.io.*;
import java.util.*;
import java.sql.*;
public class UtentiBean
{
private String risposta;
private Connection c;
private Statement st;
private String dbUrl;
//variabile booleana per gestire la sessione dell'utente
private boolean auth=false;
private boolean checkSave=false;
//variabile per recuperare e gestire i messaggi di errore
private String msgErrore="";
//connessione al database
public void setDbUrl(String dbUrl)
{
this.dbUrl = dbUrl;
}
public void connect()
{
try
{
/* the following command load the jdbc driver */
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
c = DriverManager.getConnection(dbUrl,null,null);
st = c.createStatement();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void disconnect()
{
try
{
c.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
//fine metodi di connessione al database
//metodi SET e GET
public String getRisposta()
{
return risposta;
}
public void setRisposta(String risposta)
{
this.risposta = risposta;
}
//metodo per recuperare il messaggio in caso d'errore
public String getMsgErrore()
{
return msgErrore;
} /
/metodo per ottenere l'autorizzazione dopo il login
public boolean getAuth()
{
return auth;
}
public boolean loginRisposta()
{
auth = false;
try
{
int numRisp = 4; //numero possibili risposte
int votiTot; //numero totale dei voti
float percentuale; //percentuale per ogni risposta
int frequenze[] = new int[numRisp]; //numero di voti per ogni risposta
String risposte[] = new String[numRisp];
//array di stringhe con le risposte
risposte[0]="Risposta 1";
risposte[1]="Risposta 2";
risposte[2]="Risposta 3";
risposte[3]="Risposta 4";
//crea il recordset -> calcolo dei voti totali
ResultSet r = st.executeQuery("SELECT sum(risp) as tot from frequenze");
r.next();
votiTot = r.getInt("tot");
System.out.println("Totale dei voti: "+votiTot+"
");
//calcolo dei voti per ogni singola risposta e stampa
for (int i=0; i<numRisp; i++)
{
r=st.executeQuery("SELECT sum(risp) as tot from frequenze WHERE risp = "+i);
r.next();
frequenze[i]=r.getInt("tot");
System.out.println(risposte[i]+": "+frequenze[i]+" voti
");
auth = true;
}//for
System.out.println("
");
System.out.println("<table align=center border=0>");
//creazione del grafico dei voti
for (int i=0; i<numRisp; i++)
{
//calcolo della percentuale
percentuale = (float)frequenze[i]/votiTot*100;
System.out.println("<tr valign='center' align='left'><td>");
System.out.println(risposte[i]+"</td><td>");
System.out.println("[img]blu.gif[/img]");
System.out.println((int)percentuale+"%</td>");
}//for
System.out.println("</tr>");
System.out.println("</table>");
}
catch (Exception e)
{
msgErrore = e.getMessage();
}
return auth;
}
mentre questa è la pagina che dovrebbe richiama la classe e dovrebbe visualizzare i risultati,
non restituisce nessun errore,ma non visualizza i dati del metodo: public boolean loginRisposta()
codice:
<html>
<head>
<title>Risultati del sondaggio</title>
</head>
<%@page language="java"%>
<%@page language="java" import="java.sql.*" %>
<jsp:useBean id="bean" scope="session" class="beans.UtentiBean"/>
<body bgcolor=#FFFF99>
<center> <big>Domanda del sondaggio</big>
<% bean.setDbUrl("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)}; DBQ=C:/Programmi/Apache Software Foundation/Tomcat 5.5/webapps/sondaggio/sondaggio.mdb");
bean.connect();
bean.loginRisposta();
if (bean.getAuth()) { %>
Operazione effettuata</p>
<% } else { %>
<h1>Errore!</h1>
Operazione non effettuata</p>
Motivo dell'errore:
<%=bean.getMsgErrore()%> <%
}
bean.disconnect(); %>
</body>
</html>
ps il db è un db di access con una tabella con una sola colonna di tipo numerico
nomedb=sondaggio
tabella =frequenze
nome_colonna= risp
saluti