Use*_*854 6 java database-connection jdbc
我是JDBC的新手,我写了一个小程序来检查注册的驱动程序.我想做以下事情
我检查了寄存器的数量而没有加载任何驱动程序:
我期待它给出了3名注册的车手让我感到惊讶.
我使用Class.forName()加载了一个驱动程序;
我期待它向我展示四位车手再次受到惊吓,它只显示3名车手
最后,我使用DriverManager注册驱动程序
现在它显示了四个驱动程序
任何人都可以帮助我理解这里发生的事情.我的问题如下
Class.forName注册驱动程序加载类?(我想答案不是因为从我的经验,我要求这只是为了确定)如果没有然后加载类只是为了寻求执行像(DriverManager等...)的界面我列出了程序和输出供您参考.
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{
//checking for registered drivers
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++;
}
//loading the driver
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++;
}
//After Registering driver
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++;
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
Drivers registered initially
Run Code Online (Sandbox Code Playgroud)
1 sun.jdbc.odbc.JdbcOdbcDriver@2c84d9
2 oracle.jdbc.OracleDriver@8bdcd2
3 com.mysql.jdbc.Driver@1f31ad9
Drivers after class loading
Run Code Online (Sandbox Code Playgroud)
1 sun.jdbc.odbc.JdbcOdbcDriver@2c84d9
2 oracle.jdbc.OracleDriver@8bdcd2
3 com.mysql.jdbc.Driver@1f31ad9
After registering oracle driver
Run Code Online (Sandbox Code Playgroud)
1 sun.jdbc.odbc.JdbcOdbcDriver@2c84d9
2 oracle.jdbc.OracleDriver@8bdcd2
3 com.mysql.jdbc.Driver@1f31ad9
4 oracle.jdbc.driver.OracleDriver@167acf2
从 JDK6 开始,如果 JVM 在类路径中找到任何驱动程序类,则会自动加载 JDBC 驱动程序。JDK6中不再需要Class.forName语句。这就是您获取驱动程序的原因,因为它们位于您的类路径中并由 JVM 加载。
| 归档时间: |
|
| 查看次数: |
1421 次 |
| 最近记录: |