Ho completato UtenteDAOPostgreSQL, aggiunto closeAll(), modificato leggermente le eccezioni e corretto il codice dell'interfaccia ma non saprei proprio come impedire gli @Override dentro le interfacce.
Main.jsp è il classico Main di java. Ho chiuso per un istante il mio progetto su Maven con la mia esercitazione ed ho creato un progetto semplice in java per testare il driver JDBC.
Così può andare?
Utente.java
public class Utente {
private long id;
private String nome;
private String password;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
UtenteDAO.java
import java.sql.SQLException;
import java.util.List;
public interface UtenteDAO {
public List<Utente> findAll() throws SQLException;
public Utente findByName(String nome) throws SQLException;
public Utente findById(long id) throws SQLException;
public long insert(Utente u) throws SQLException;
public long delete(Utente u) throws SQLException;
public long update(Utente u) throws SQLException;
}
UtenteDAOPostgreSQL.java
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class UtenteDAOPostgreSQL implements UtenteDAO {
PostgreSQLCredenziali psc = new PostgreSQLCredenziali();
private final String url = psc.getUrl();
private final String user = psc.getUser();
private final String password = psc.getPassword();
public Connection connect() {
Connection conn = null;
try {
conn = DriverManager.getConnection(url, user, password);
System.out.println("Connesso al server PostgreSQL con successo.");
} catch (SQLException e) {
System.out.println("Impossibile connettersi al server PostgreSQL.");
System.out.println(e.getMessage());
}
return conn;
}
public void closeAll(ResultSet rs, PreparedStatement ps, Connection conn) {
try {
if (rs != null) rs.close();
} catch (Exception e) {
System.out.println("Impossibile chiudere il ResultSet.");
throw new RuntimeException(e);
}
try {
if (ps != null) ps.close();
} catch (Exception e) {
System.out.println("Impossibile chiudere il PreparedStatement.");
throw new RuntimeException(e);
}
try {
if (conn != null) conn.close();
} catch (Exception e) {
System.out.println("Impossibile chiudere la connessione.");
throw new RuntimeException(e);
}
}
public List<Utente> findAll() throws SQLException {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
Utente utente;
try {
conn = connect();
ps = conn.prepareStatement("SELECT * FROM utenti");
rs = ps.executeQuery();
List<Utente> lista = new ArrayList<Utente>();
while (rs.next()) {
utente = new Utente();
utente.setId(rs.getInt("id"));
utente.setNome(rs.getString("nome"));
utente.setPassword(rs.getString("password"));
lista.add(utente);
}
return lista;
} catch (Exception e) {
System.out.println("Impossibile eseguire la query.");
System.out.println(e.getMessage());
} finally {
closeAll(rs, ps, conn);
}
return new ArrayList<Utente>();
}
public Utente findByName(String nome) throws SQLException {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
Utente utente;
try {
conn = connect();
ps = conn.prepareStatement("SELECT * FROM utenti WHERE nome = ?");
ps.setString(1, nome);
rs = ps.executeQuery();
List<Utente> lista = new ArrayList<Utente>();
utente = new Utente();
while (rs.next()) {
utente.setId(rs.getInt("id"));
utente.setNome(rs.getString("nome"));
utente.setPassword(rs.getString("password"));
}
return utente;
} catch (Exception e) {
System.out.println("Impossibile eseguire la query.");
System.out.println(e.getMessage());
} finally {
closeAll(rs, ps, conn);
}
return new Utente();
}
public Utente findById(long id) throws SQLException {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
Utente utente;
try {
conn = connect();
ps = conn.prepareStatement("SELECT * FROM utenti WHERE id = ?");
ps.setLong(1, id);
rs = ps.executeQuery();
List<Utente> lista = new ArrayList<Utente>();
utente = new Utente();
while (rs.next()) {
utente.setId(rs.getInt("id"));
utente.setNome(rs.getString("nome"));
utente.setPassword(rs.getString("password"));
}
return utente;
} catch (Exception e) {
System.out.println("Impossibile eseguire la query.");
System.out.println(e.getMessage());
} finally {
closeAll(rs, ps, conn);
}
return new Utente();
}
public long insert(Utente u) throws SQLException {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
long riga = 0;
try {
conn = connect();
String query = "INSERT INTO utenti (nome, password) VALUES (? , ?)";
ps = conn.prepareStatement(query, PreparedStatement.RETURN_GENERATED_KEYS);
ps.setString(1, u.getNome());
ps.setString(2, u.getPassword());
ps.executeUpdate();
rs = ps.getGeneratedKeys();
if (rs.next()) {
riga = rs.getLong(1);
}
return riga;
} catch (Exception e) {
System.out.println("Impossibile eseguire la query.");
System.out.println(e.getMessage());
} finally {
closeAll(rs, ps, conn);
}
return 0;
}
public long delete(Utente u) throws SQLException {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
long riga = 0;
try {
conn = connect();
String query = "DELETE FROM utenti WHERE nome = ?";
ps = conn.prepareStatement(query, PreparedStatement.RETURN_GENERATED_KEYS);
ps.setString(1, u.getNome());
ps.executeUpdate();
rs = ps.getGeneratedKeys();
if (rs.next()) {
riga = rs.getLong(1);
}
return riga;
} catch (Exception e) {
System.out.println("Impossibile eseguire la query.");
System.out.println(e.getMessage());
} finally {
closeAll(rs, ps, conn);
}
return 0;
}
public long update(Utente u) throws SQLException {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
long riga = 0;
try {
conn = connect();
String query = "UPDATE utenti SET nome = ?, password = ? WHERE nome = ?";
ps = conn.prepareStatement(query, PreparedStatement.RETURN_GENERATED_KEYS);
ps.setString(1, u.getNome());
ps.setString(2, u.getPassword());
ps.setString(3, u.getNome());
ps.executeUpdate();
rs = ps.getGeneratedKeys();
if (rs.next()) {
riga = rs.getLong(1);
}
return riga;
} catch (Exception e) {
System.out.println("Impossibile eseguire la query.");
System.out.println(e.getMessage());
} finally {
closeAll(rs, ps, conn);
}
return 0;
}
}
Main.jsp
... il solito ... codice scritto solo per testare ...