Secondo me ti stai complicando la vita.
io nel mio progetto ho fatto così
Fare una boundary con tutti i metodi che ti servono per aggiungere, rimuovere, selezionare o aggiornare dati nella tua base dati.
Molti puristi del java mi daranno addosso perché no ho usato i PreparedStatement, ma io mi trovo bene così e il mio progetto funziona correttamente.
Ovviamente ho usato molti oggetti e la connessione la realizzo con i dati provenienti da un file INI cosìcché quando devo cambiare parametri non ho bisogno di toccare codice sorgente.
public class LinkDB {
private Connection c;
...
...
public LinkDB(){
Parameters p=ReadIni.getParameter();
c=DriverManager.getConnection(p.getUrl2()+System.getProperty("user.dir")+p.getPath());
logger.debug("Connessione al DB - ["+ c.hashCode()+"]...");
}
public int AggiornaScoresMan(int idPartita, int idPlayer, int idSquadra, String minuto, int autogol, int rigore, String comments) {
int res=-1;
try{
Statement s = c.createStatement();
String insertMarcatori="INSERT INTO Segnature(partita, giocatore, squadra, minuto, autogol, rigore, commenti)values("+idPartita+","+idPlayer+", "+idSquadra+", '"+minuto+"',"+autogol+", "+rigore+", '"+comments+"')";
res = s.executeUpdate(insertMarcatori);
s.close();
}
catch(SQLException e){
System.err.println(e);
}
return res;
}
public LinkedList<PenalizedTeam> getAllPenalizedTeam(){
LinkedList<PenalizedTeam> list=new LinkedList<PenalizedTeam>();
try{
Statement s = c.createStatement();
String sql="";
sql+=" SELECT B.idsquadra, B.nome, B.logo, A.decurtazione, A.commenti";
sql+=" FROM Penalizzazioni A, Squadre B";
sql+=" WHERE B.idSquadra=A.idSquadra";
sql+=" ORDER BY B.idSquadra";
ResultSet r = s.executeQuery(sql);
while(r.next())
{
list.add(new PenalizedTeam(r.getInt("idsquadra"), r.getString("nome"), r.getString("logo"), r.getInt("decurtazione") , r.getString("commenti")));
}
r.close();
s.close();
}
catch(SQLException e){
e.printStackTrace();
}
return list;
}
public int setFinalResult(Risultato partita){
int res=-1;
try{
Statement s = c.createStatement();
String result = "UPDATE Partite set RisultatoA="+partita.getGol1()+" , RisultatoB="+partita.getGol2()+", disputata=1 where ID="+partita.getIdPartita();
res = s.executeUpdate(result);
s.close();
}
catch(SQLException e) {
System.err.println(e);
}
return res;
}
public int deleteHTMLPageIntoDB(int id) {
int ret =-1;
try{
Statement s = c.createStatement();
String query="";
query += " DELETE FROM HTMLContents";
query += " WHERE idpartita="+id;
ret = s.executeUpdate(query);
}
catch(SQLException e){
e.printStackTrace();
}
catch(Exception ex){
ex.printStackTrace();
}
return ret;
}
public void closeConnection(){
try{
c.close();
logger.debug("Chiusura connessione al DB - ["+c.hashCode()+"]");
}
catch(SQLException sqlex){
sqlex.printStackTrace();
logger.debug("Errore chiusura connessione al DB - ["+c.hashCode()+"]");
}
}
....
...
...
}
e poi da un qualunque classe richiamo la boundary del DB
LinkDB db=new LinkDB();
db.deleteHTMLPageIntoDB(1);
db.close
Non capisco perché devi mettere anche la colonna quando sai come è costruita la tua base dati e le colonne che compongono una tabella.
Ciao