salve ragazzi ho questo script che funziona bene,ossia fa ciò che voglio,ma fa una cosa strana all'interno del database, ogni vlta che accedo alla pagina con un ip diverso lo memorizza 2 volte nel database siccome a questa pag avrà molti accessi, avrò una tabella con un numero di record doppi.cosa c'è che non va nel codice?
codice:
<html>
<head>
<title>ip</title>
</head>
<%@ page language="java" %>
<%@ page import="java.sql.*"%>
<%@ page import="java.lang.*"%>
<%@ page import="java.util.*"%>
<body bgcolor=#FFFF99><center> <big>Domanda </big>
<%
String DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver"; String DB_Url = ("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)}; DBQ=C:/Programmi/Apache Software Foundation/Tomcat 5.5/webapps/ip/ip.mdb");
try
{
Class.forName(DRIVER);
}
catch(ClassNotFoundException e)
{
System.out.println(e.toString());
System.out.println("File non trovato");
System.exit(1);
}
try
{
Connection conn= DriverManager.getConnection(DB_Url);
Statement st = conn.createStatement();
String ip = new String(request.getRemoteAddr());
out.println(ip);
String query="";
query="SELECT ip from ipt WHERE ip";
ResultSet rs = st.executeQuery(query);
if(!rs.next())
{
out.println("è la prima volta che accedi a questa pagina");
//crea la stringa SQL per l'aggiornamento
String stringaSql = new String ("INSERT INTO ip_tab (ip) VALUES ('"+ip+"')");
st.executeUpdate(stringaSql);
int esito;
esito = st.executeUpdate(stringaSql);
//controlla che tutto sia andato bene
if (esito==1)
{
out.println("eseguita con successo");
}
else
{
out.println("Errore, non stato possibile eseguire");
} }//if
else
{
//l'utente ha effuato la visita
out.println("Spicenti!
");
}//else
conn.close();
}
catch(SQLException ex)
{
System.err.println("SQLException: " + ex.getMessage()) ;
}
%>
</font>
</body>
</html>
saluti