/ / pourquoi class.forname (com.mysql.jdbc.Driver) est-il écrit dans une classe de connexion à une base de données? [dupliquer] - java, jdbc

pourquoi class.forname (com.mysql.jdbc.Driver) est-il écrit dans une classe de connexion à la base de données? [dupliquer] - java, jdbc

J'ai écrit une classe dbconnection.java et elle a un bloc statique où je charge la classe du pilote

    static
{
try
{
Class.forName(com.mysql.jdbc.Driver);
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
}

Je sais que ce bloc statique est écrit pour enregistrer le pilote. mais même lorsque je commente ce bloc statique et que je tente d'établir une connexion à une base de données, il se connecte.

Donc je voulais savoir Quelle est l'importance ou la signification d'écrire ce bloc statique</ strong>.

Réponses:

1 pour la réponse № 1

(Je réponds à cette question car nous n’avons malheureusement pas de raison de fermer RTFM)

Si vous lisez le tutoriel fourni par oracle vous constaterez que c’était autrefois nécessaire mais avec de nombreux pilotes modernes (JDBC 4.0), ce n’est pas le cas:

Dans les versions précédentes de JDBC, pour obtenir une connexion, vous deviez d'abord initialiser votre pilote JDBC en appelant la méthode Class.forName.. Cette méthode nécessitait un objet de type java.sql.Driver. Chaque pilote JDBC contient une ou plusieurs classes qui implémentent l'interface java.sql.Driver. Les pilotes pour Java DB sont org.apache.derby.jdbc.EmbeddedDriver et org.apache.derby.jdbc.ClientDriver, et celui de MySQL Connector / J est com.mysql.jdbc.Driver. Consultez la documentation de votre pilote de SGBD pour obtenir le nom de la classe qui implémente l'interface java.sql.Driver.

Tous les pilotes JDBC 4.0 trouvés dans votre chemin de classe sont automatiquement chargés. (Cependant, vous devez charger manuellement tous les pilotes antérieurs à JDBC 4.0 avec la méthode Class.forName.)

(c'est moi qui souligne)


-2 pour la réponse № 2

Placer ce code dans un bloc statique est utilisé pourAssurez-vous qu'un processus a le même pilote. Il est exécuté lorsque la classe est chargée (ou initialisée, pour être précis, mais vous ne remarquez généralement pas la différence). Les détails peuvent être vus à ce lien