I am very new to JDBC and I wrote a small program to check for registered drivers. I wanted to do the following
I checked the number of registers without loading drivers:
I expected that it would not give anything to my surprise, it gives 3 registered drivers.
I loaded the driver using Class.forName ();
I expected him to show me four drivers, but again got a shock, he shows only 3 drivers
Finally, I register the driver using DriverManager
Now it shows four drivers.
Can someone help me understand what is going on here. My question is as follows
- These three drivers are loaded / registered by default.
- Do I load a class using
Class.forNameregister driver? (I think the answer is not for this, because from my experience, I ask it just to be sure), if not, then the class is loaded just to search for the implementation of external interfaces, such as (DriverManager, etc. ... ) - Finally, what is the difference between downloading a driver and registering a driver
I have listed both the program and the output for your reference.
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Enumeration;
import oracle.jdbc.driver.OracleDriver;
class Test3{
public static void main(String[] args) throws Exception{
System.out.println("Drivers registered initially");
Enumeration enumm = DriverManager.getDrivers();
int count=1;
while(enumm.hasMoreElements()){
Driver dr=(Driver)enumm.nextElement();
System.out.println(count+" "+dr);
count++;
}
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("\n\nDrivers after class loading");
enumm = DriverManager.getDrivers();
count=1;
while(enumm.hasMoreElements()){
Driver dr=(Driver)enumm.nextElement();
System.out.println(count+" "+dr);
count++;
}
OracleDriver odr= new OracleDriver();
DriverManager.registerDriver(odr);
System.out.println("\nAfter registering oracle driver");
enumm = DriverManager.getDrivers();
count=1;
while(enumm.hasMoreElements()){
Driver dr=(Driver)enumm.nextElement();
System.out.println(count+" "+dr);
count++;
}
}
}
Output:
Drivers registered initially
1 sun.jdbc.odbc.JdbcOdbcDriver@2c84d9
2 oracle.jdbc.OracleDriver@8bdcd2
3 com.mysql.jdbc.Driver@1f31ad9
Drivers after class loading
1 sun.jdbc.odbc.JdbcOdbcDriver@2c84d9
2 oracle.jdbc.OracleDriver@8bdcd2
3 com.mysql.jdbc.Driver@1f31ad9
After registering oracle driver
1 sun.jdbc.odbc.JdbcOdbcDriver@2c84d9
2 oracle.jdbc.OracleDriver@8bdcd2
3 com.mysql.jdbc.Driver@1f31ad9
4 oracle.jdbc.driver.OracleDriver@167acf2
source
share