Fermeture de la connexion et de la déclaration enfin
Ce qui est mieux pour le bloc finally:
finally {
try {
con.close();
stat.close();
} catch (SQLException sqlee) {
sqlee.printStackTrace();
}
}
Ou:
finally {
try {
if (con != null) {
con.close();
}
if (stat != null) {
stat.close();
}
} catch (SQLException sqlee) {
sqlee.printStackTrace();
}
}
Eh bien, depuis le premier serait jeter un NPE ...
Vous devez fermer la déclaration avant la connexion.
belle note, Pouvez-vous dire pourquoi?
parce qu'une Déclaration est créé à partir de la connexion. Techniquement mis en œuvre correctement les pilotes JDBC va fermer Consolidés lorsque la Connexion est fermée, mais si vous ne voulez pas dépendre de ce que vous devez fermer la Déclaration de la première.
merci
Vous devez fermer la déclaration avant la connexion.
belle note, Pouvez-vous dire pourquoi?
parce qu'une Déclaration est créé à partir de la connexion. Techniquement mis en œuvre correctement les pilotes JDBC va fermer Consolidés lorsque la Connexion est fermée, mais si vous ne voulez pas dépendre de ce que vous devez fermer la Déclaration de la première.
merci
OriginalL'auteur Sajad | 2013-08-07
Vous devez vous connecter pour publier un commentaire.
Meilleure façon de l'utiliser est le 2ème, parce que si une exception est levée lors de l'initialisation
con
oustat
, ils ne seront pas initialisés, et peut-être de gauche initialisé ànull
. Dans ce cas, en utilisant le 1er code jeterNullPointerException
.Aussi, si vous êtes déjà sur Java 7, vous devriez envisager d'utiliser
try-with-resources
, qui se ferme automatiquement les ressources. À partir de la liés tutoriel:Ok, on Peut dire que cette
try-with-resources
est plus simple que l'ancienne? Parce que la spécification du type d'exception est automatiquement et pas besoin de bloc catch?Il est plus simple dans le sens, vous n'avez pas à vous inquiéter au sujet de la fermeture de toutes les ressources que vous utilisez. Mais vous avez encore besoin de fournir un
catch
bloc.Il est un exemple de
Connection
etStatement
, dans le tutoriel, qui vous pouvez utiliser.Nice aider, Merci...
OriginalL'auteur Rohit Jain
Aucun d'entre eux sont assez bons. Utilisez ceci:
Et de l'appeler comme
closeQuietly(stat, con);
Ou de l'utilisation de java 7
try-with-resource
:finally
bloc (qui définit chaquec = null;
) est souhaitable.Vous ne devriez pas régler manuellement les champs et les variables à null pour "informer" le GC, à moins que la portée est longue. Dans l'exemple ci-dessus, nous parlons d'un millième de seconde ou moins, et le gain est faible (le cas échéant).
J'ai répondu trop large. Dans l'exemple ci-dessus, les références d'origine de la Connexion et de l'Instruction existe encore en dehors de cette méthode (qui a appelé la méthode a encore les références d'origine) et nous venons d'être nulle avec les copies des références transmis à notre méthode.
OriginalL'auteur Xabster
De Java 7, vous n'avez plus besoin d'utiliser le finallyl bloc à fermer une Connexion, ou de la Déclaration de l'objet. Au lieu de cela, vous pouvez utiliser les nouvelles fonctionnalités appelé "try-with-resources".
Tout d'abord vous déclarer une Connexion et Statament des objets en utilisant la nouvelle syntaxe pour un bloc try-catch comme suit:
De le faire, vous n'aurez pas besoin de s'inquiéter de fermer explicitement le lien avec la base de données dans un bloc finally parce que la jvm va le faire pour vous.
Avoir agréable de codage....
OriginalL'auteur David Archanjo
Si il y a une possibilité est
null
, vous devez vérifier que. Si la possibilité n'existe pas, il n'y a aucune raison valable de les vérifier.Aussi, vous pouvez rendre votre code un peu mieux lisible en omettant certains instruction unique entre parenthèses:
OriginalL'auteur bas
Je voudrais aller avec la deuxième option, mais l'ajout d'une deuxième instruction
finally
bloc, juste pour s'assurer que les deuxcon
etstat
objets sont marqués pour la collecte des ordures:OriginalL'auteur Barranka