sql >> Database >  >> RDS >> Mysql

Waarom registreert het aanroepen van Class.forName(com.mysql.jdbc.Driver) de MySQL voor JDBC?

Het registreert het omdat het de klasse in het geheugen laadt en de statische initialisatieprogramma's van de klasse uitvoert. De statische initialisatiecode roept vervolgens het JDBC-framework aan om te zeggen "Hallo, ik ben een JDBC-stuurprogramma" (door DriverManager.registerDriver ).

De chauffeursklasse ziet er bijvoorbeeld vaag uit zoals dit:

package com.example.jdbc;

import java.sql.DriverManager;

public class Driver implements java.sql.Driver {
    static {
        DriverManager.registerDriver(new Driver());
    }

    // ...implementation...
}

Wanneer u vervolgens Class.forName("com.example.jdbc.Driver") doet , het laadt de klasse en voert de statische initialisatie uit, die een instantie maakt en deze registreert bij de DriverManager .

Ik moet er rekening mee houden dat zoals Andreas zegt , hebben moderne JDBC-stuurprogramma's u niet nodig om dit te doen.




  1. Bestanden in een map weergeven met SQL Server

  2. Twitter-wedstrijd ~ tweets opslaan (PHP &MySQL)

  3. eenvoudige sql-query, resultaten combineren en delen

  4. Php mysql database maken als deze niet bestaat