sql >> Database teknologi >  >> RDS >> Mysql

Hvorfor registrerer det at kalde Class.forName(com.mysql.jdbc.Driver) MySQL for JDBC?

Den registrerer den, fordi den indlæser klassen i hukommelsen og kører klassens statiske initialiseringsprogrammer. Den statiske initialiseringskode kalder derefter ind i JDBC-rammen for at sige "Hej, jeg er en JDBC-driver" (ved at kalde DriverManager.registerDriver ).

F.eks. vil førerklassen se vagt ud sådan her:

package com.example.jdbc;

import java.sql.DriverManager;

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

    // ...implementation...
}

Når du derefter gør Class.forName("com.example.jdbc.Driver") , indlæser den klassen og kører den statiske initialisering, som opretter en instans og registrerer den med DriverManager .

Jeg skal bemærke, at som Andreas siger , moderne JDBC-drivere behøver dig ikke til at gøre dette.




  1. Sådan indstiller du tegnsættet og sorteringen af ​​en kolonne i MySQL

  2. xampp MySQL starter ikke

  3. få tidligere værdi på plads for nul rækker

  4. Hvordan opretter man en MySql-database ved hjælp af shell_exec php?