是这样的:
我刚学JDBC,而且我这个人爱琢磨,喜欢刨根问底,
我想试一下加载JDBC驱动的两种方法:Class.forName() 和
System.setProperty()这两者有什么区别。一试我才发现即使不执行加载驱动程序的语句,
只要执行了DriverManager的getConnection()方法,并指定了正确的URL
就可以连上数据库,并正常读取数据了。
(注:我用的是JDBC-ODBC桥的方式连接SQL server 2000,其他方式我还没用过)
难道JdbcOdbcDriver这个驱动是Java自动加载的吗?
另外,为什么我在tools.jar和dt.jar中都没有找到JdbcOdbcDriver这个类呢?
而且也没有找到sun.jdbc.odbc这个包,为什么?
谢谢!
我刚学JDBC,而且我这个人爱琢磨,喜欢刨根问底,
我想试一下加载JDBC驱动的两种方法:Class.forName() 和
System.setProperty()这两者有什么区别。一试我才发现即使不执行加载驱动程序的语句,
只要执行了DriverManager的getConnection()方法,并指定了正确的URL
就可以连上数据库,并正常读取数据了。
(注:我用的是JDBC-ODBC桥的方式连接SQL server 2000,其他方式我还没用过)
难道JdbcOdbcDriver这个驱动是Java自动加载的吗?
另外,为什么我在tools.jar和dt.jar中都没有找到JdbcOdbcDriver这个类呢?
而且也没有找到sun.jdbc.odbc这个包,为什么?
谢谢!
import java.sql.*;
class xt{
public static void main(String in[]){
/*
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException cnfe){
}*/
//System.setProperty("jdbc.drivers","sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println(System.getProperty("jdbc.drivers"));
try{
Connection con=DriverManager.getConnection("jdbc:odbc:test");
Statement stat=con.createStatement();
ResultSet rs=stat.executeQuery("select * from room");
while(rs.next()){
System.out.println(rs.getString(1));
}
}catch(SQLException sqle){
}
}
}
(注: 在我的机子上可以正确读出数据)
重要说明:JavaSE在安装后仅自带了JDBC-ODBC连接桥的驱动程序,其他要自己下载并添加jar到classpath
但JavaSE6.0开始对于支持JavaSE6.0的JDBC驱动程序可以不必使用Class.forName加载驱动
系统会自动加载