Erreur: source de Données rejeté l'établissement de la connexion, message du serveur: “Trop de connexions”
J'ai créé une application qui écrit des données dans la base de données toutes les 5 minutes.
Cependant, après un certain temps, cette erreur s'affiche:
Error: Data source rejected establishment of connection, message from server: "Too many connections"
J'ai été la recherche autour et vous dit de fermer la connexion à la base de données après chaque demande de côté.
J'ai essayé ceci:
conexao.close();
Mais il me donne cette erreur:
No operations allowed after conection closed.
Je m'excuse si la question n'est pas bien formulé.
Merci pour l'aide
---------------------Ce que j'ai essayé, mais n'a pas fonctionné---------------------------
Ajouter
finally{
if(conexao!=null)
conexao.close();
}
Class.forName("com.mysql.jdbc.Driver");
Connection conexao = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/bdTeste", "root", "root");
Statement stm = conexao.createStatement();
BufferedReader reader = new BufferedReader(new FileReader("C:/Users/RPR1BRG/Desktop/test.txt"));
String dados[] = new String[6];
String linha = reader.readLine();
while (linha != null) {
StringTokenizer st = new StringTokenizer(linha, ";\"");
dados[0] = st.nextToken();
dados[1] = st.nextToken();
dados[2] = st.nextToken();
dados[3] = st.nextToken();
dados[4] = st.nextToken();
dados[5] = st.nextToken();
DateFormat dateFormat = new SimpleDateFormat("d-M-yy");
PreparedStatement stmt = (PreparedStatement) conexao.prepareStatement("replace into registos"
+ " (data_registo, hora_registo, IdSensor, Temperatura, Humidade, pt_orvalho) values (?,?,?,?,?,?)");
try {
stmt.setDate(1, new java.sql.Date(dateFormat.parse(dados[0]).getTime()));
stmt.setString(2, dados[1]);
stmt.setString(3, dados[2]);
stmt.setString(4, dados[3]);
stmt.setString(5, dados[4]);
stmt.setString(6, dados[5]);
} catch (java.text.ParseException ex) {
Exceptions.printStackTrace(ex);
}
stmt.executeUpdate();
linha = reader.readLine();
PrintWriter writer = new PrintWriter("C:/Users/RPR1BRG/Desktop/test.txt");
writer.print("");
writer.close();
Verifica();
}
} catch (ClassNotFoundException | SQLException | IOException e) {
System.err.println("Erro: " + e.getMessage());
}finally{
if(conexao!=null)
conexao.close();
}
combien de fois est-ce code appelé ? je pense que vous êtes la création d'un grand nombre de connexions sans les fermer
Merci pour la réponse: - je appeler ce code toutes les 5 minutes pour lire le fichier et écrire dans la base de données. J'ai essayé de fermer la connexion, mais donnez-moi une autre erreur: "Aucune des opérations après la connexion fermée."
Merci pour la réponse: - je appeler ce code toutes les 5 minutes pour lire le fichier et écrire dans la base de données. J'ai essayé de fermer la connexion, mais donnez-moi une autre erreur: "Aucune des opérations après la connexion fermée."
OriginalL'auteur user3320956 | 2014-03-24
Vous devez vous connecter pour publier un commentaire.
Ce genre de problème se pose lorsque vous êtes PAS correctement la fermeture de la connexion après l'utilisation.
Remarque: Si la JVM sorties alors que le try ou catch code est exécuté, puis le bloc finally ne peut pas s'exécuter. De même, si le thread exécutant le try ou catch code est interrompu ou tué, le bloc finally ne peut pas exécuter même si l'ensemble de la demande se poursuit.
Comme vous l'avez demandé dans un commentaire, j'ai ajouté le code de l'échantillon de démontrer en pratique!
Veuillez noter que la déclaration de
Connection
variable doit être portée à la fermer dansfinally
bloc.Espérons que cette aide!
Encore une fois merci beaucoup. J'ai essayer ce que vous avez dit, mais me donne le même message d'erreur lors de passé un peu de temps. "Aucune des opérations après la connexion fermée."
Merci de poster le code mis à jour entièrement, ce qui est pertinent
Merci d'éditer votre question correctement à l'aide. Ses pas lisible.
Désolé...Et maintenant? c'est lisible?
OriginalL'auteur Keerthivasan