Originariamente inviato da LeleFT
Conviene sempre aprire una sola volta la connessione al db e usare sempre quella per le query.
Trovi un esempio nella mia pillola JDBC:
qui.
Ciao.
Grazie mille Lele! effettivamente non l'avevo letta :-)
ora ho qualche domanda più specifica da fare, dopo aver dato un'occhiata anche al codice di esempio nella tua pillola... tra l'altro uso proprio il connector-j per cui già le prime righe sono utili :-)
1) prima di tutto vedo che dopo aver fatto la query tu chiudi anche il ResultSet e lo Statement: ma è necessario farlo?? credevo che si chiudessero da sé :-)
2) la classe connetti() assegna l'oggetto connessione alla variabile db che hai messo private... come ci potrei accedere da altri file? cioè come si fa a richiamarla da altri frame? cioè in un file classe ho i metodi di connessione, in altri file.java ho l'interfaccia e i metodi per le query e gli update.
per esemplificare riporto qui sotto il codice del mio file Connessione.java per come è scritto adesso:
codice:
import java.sql.*;
public class Connessione {
/** Creates a new instance of Connessione */
public Connessione() {
}
public static void caricaDriver() {
//carico i driver di mysql
try {
Class.forName("com.mysql.jdbc.Driver");
}
catch (Exception e){
System.err.println("Errore driver DB!");
System.err.println(e.getMessage());
}
}
public static Connection connetti() throws SQLException {
//apro la connessione al DB
return DriverManager.getConnection("jdbc:mysql://localhost:3306/miodatabase", "root", "");
}
}
nel codice degli altri file che lo usano, uso queste righe di comando:
una volta per frame, prima di connettermi:
codice:
Connessione.caricadriver();
al momento delle querry, ho due versioni: una è priva di chiusura della connessione, attualmente! ed è questa:
codice:
Statement leggi = Connessione.connetti().createStatement();
ResultSet rs = null;
rs = executeQuery("stringa_sql");
//ecc.
l'altra versione, un tentativo, è:
codice:
Connection conn = Connessione.connetti();
Statement leggi = conn.createStatement();
ResultSet rs = null;
rs = executeQuery("stringa_sql");
//ecc.
conn.close();
(la parte e le variabili relative a nome database, password ecc non mi servono perché il db è unico e metto subito tutti i dati nella stringa di connessione vera e propria. anche il metodo isConnesso() si può saltare, perché mi basterebbe di sapere il risultato di connetti()... mi serve di capirlo per un progetto d'esame che comunque dovrà funzionare per pochi minuti.... nonsottilizzerei ;-) mi basta che sia corretto il concetto e che non dia errori ^^')
scusatemi l'ignoranza: per dire a che livello sono con questa roba, avevo anche tenuto per un po' una bellissima Connessione.connetti().close() che ripensandoci penso che apriva una nuova connessione e la richiudeva subito (intelligentissimo!) :-)
grazie!