Dopo aver chiuso una connessione al database in java, posso riaprirlo? O devo ancora fare DriverManager.getConnection()
?Riapri connessione al database in Java
risposta
Non sono sicuro al 100% che tu sia il necessario chiamare DriverManager.getConnection()
ma qual è il danno? Hai già chiuso la connessione, prendine una nuova quando ne hai bisogno. Il garbage collector si preoccupa di quella connessione chiusa dopo averla scartata.
sì, non si può fare nulla dopo aver chiuso la connessione. devi chiamare getConnection
Come Javadoc menzioni:
getConnection: Attempts to establish a connection to the given database URL.
Pertanto sì, chiamando getConnection() si presenta ancora una volta come l'unico modo per stabilire una nuova connessione con il database una volta che hai chiuso la connessione precedente.
Se si è chiamato connection.close();
, il connection
(supponendo il tipo java.sql.Connection
) diventa inutile. Questa operazione rilascia il database di questo oggetto Connection e le risorse JDBC.
Così Sì è necessario per ottenere una connessione fresca quando prima di poter procedere
connection = DriverManager.getConnection()
Ho appena iniziato a fare connessioni JDBC a SQL Server dopo aver fatto tutto in C# e il ragazzo è stato un grande mistero per metà della mia giornata di ieri. – JoeManiaci
Beh Idealmente ho fatto approccio leggermente diverso e ha dato una soluzione diversa.
Invece di aprire e chiudere il database, che si verificava letteralmente su ogni richiesta del client, ho creato un'istanza singleton di una classe e creato una singola connessione aperta che verrà riutilizzata finché il processo del server è attivo.
In breve:
Ho getConnection()
all'interno Database
classe
public Connection getConnection() throws Exception {
try {
String connectionURL = "jdbc:mysql://localhost:3306/someDatabase";
Class.forName("com.mysql.jdbc.Driver").newInstance();
if (connection == null) {
connection = DriverManager.getConnection(connectionURL, "someUser", LOCAL_MYSQL_PASSWORD);
}
return connection;
} catch (Exception e) {
}
}
La classe Database
è singoletto, quindi riutilizzando la stessa classe e riutilizzare la stessa connessione.
Ho provato questo da show processList
e questo stava dando circa 100 connessioni Se non chiuderò la connessione, e anche se chiudo la connessione, il processo effettivo non sarà probabilmente ucciso, ma messo in sospensione invece sarà usato ogni volta che lo stesso cliente chiederà la stessa richiesta, ma se hai richieste come 15, allora ognuna di esse avrà processi separati, quindi la chiusura e l'apertura della connessione per me non era la soluzione migliore.
Con questo ho 1 singolo processo che è il livello responsabile per le query.
- 1. Connessione al database simulato Java
- 2. Java + Tomcat, connessione al database Dying?
- 3. Connessione al database eterogeneo
- 4. la connessione al database Perl
- 5. Variabile globale - connessione al database?
- 6. Rintracciare connessione al database emette
- 7. Connessione dinamica al database symfony2
- 8. Android - Connessione al database MySQL
- 9. Connessione PDQ MySql al database
- 10. Connessione al database su Heroku
- 11. Connessione al database Python Chiudi
- 12. Connessione al database utilizzando SQLAlchemy
- 13. Java usa SSL per la connessione al database
- 14. Connessione al database tramite Hibernate in servlet
- 15. connessione al database Oracle in web.config asp.net
- 16. Connessione al database SQL esterno in C#
- 17. Java - problemi di connessione al database MySQL online utilizzando JDBC
- 18. Django errore di connessione al database
- 19. Informazioni sulla stringa di connessione al database
- 20. Priorità della connessione al database PHP/MySQL?
- 21. tenere aperta una connessione al database MongoDB
- 22. Come gestire una connessione al database in un pacchetto R
- 23. (datagrip) Connessione al database con più schemi
- 24. Perché chiudere sempre la connessione al database?
- 25. Connessione al database MySQL con RMySQL
- 26. report Crystal - chiudere la connessione al database
- 27. Cambia ruolo dopo la connessione al database
- 28. Zend Framework 2 - Connessione al database
- 29. SocketTimeoutException durante la connessione al database locale
- 30. Connessione al database Oracle con C++
Cosa c'è di così difficile da provare? –
Vedete anche qualche metodo aperto su Connection? – MrJames
Non vedo alcun metodo aperto in connessione. Quindi come lo provo? Chiamare 'getConnection' funzionerà, provato, ma è il modo" corretto "? –