JDBC的迷惑 Class.forName("com.mysql.jdbc.Driver");为什么我上面那句不写,任然可以照常连接数据库? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个是要看JDK的版本,比较新的JDK版本是不需要写这句的,当然,写了也不会错。 看我的连接池:package cn.itcast.jdbc.datasource;/* * 创建连接池 */import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.util.LinkedList;public class MyDataSource { private static String url = "jdbc:mysql://localhost:3306/jdbc"; private static String user = "root"; private static String password = "root"; private LinkedList<Connection> connectionsPool = new LinkedList<Connection>(); //构造方法,创建连接池(初始化里面有10个连接) public MyDataSource(){ try{ Class.forName("com.mysql.jdbc.Driver"); for(int i=0;i<10;i++){ this.connectionsPool.addLast(this.createConnection()); //创建10个连接,并把他们加到队列里面 } }catch(SQLException e){ throw new ExceptionInInitializerError(e); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ } } //创建一个连接的语句,为了给创建连接池调用 private Connection createConnection() throws SQLException{ return DriverManager.getConnection(url,user,password); } //获取一个连接 public Connection getConnection(){ return this.connectionsPool.removeFirst(); //获取并移除此列表的第一个元素 } //释放的时候把用过的连接加到尾部 public void free(Connection conn){ this.connectionsPool.addLast(conn); }} 你确定?我用的JDK7最新版的,以前一直没注意过这个问题 这个是要看JDK的版本,比较新的版本是不需要写这句话就可以的。 我之前培训的时候老师没写这句话就正常运行,而我们学生不写这句话就不能运行,后来助教告诉我们是JDK版本的问题 这句话加载一个类到jvm中,一般是数据库驱动类,这个数据库驱动类中一定有个静态方法去系统中注册自己的数据库。新的JDK如果把对应的数据库驱动都注册了,那肯定不需要了。 Class.forName的作用就是加载驱动程序类“com.mysql.jdbc.Driver”,实际上,这不是加载该类的唯一方式,如果你没有显示的调用Class.forName加载驱动程序类,你程序中的DriverManager类也会尝试加载在 系统属性(存放在java.lang.System中)"jdbc.drivers"中引用的驱动程序类。你看看你的项目中有properties文件指定了属性jdbc.drivers么? 类型转换问题 鎬ョ瓑锛侊紙100鍒嗭級瀵规棩澶栧寘鐨勮繘 求助!~~ftp,http文件上传,下载 关于ArrayList的问题,在线等 请问Java怎么可以实现局域网内带密码共享文件的访问 解释一下thread类的join()方法 我想在swing写的框架里面,内置一个浏览器,不知道如何实现,高分求问 一类文件反编译后,怎么看不懂了??而且再编译,也通不过,急啊~~~ 问一个简单问题,String和String Buffer有什么区别? mysql远程访问慢 数组中元素值放在哪,在线等 JAVA Jmenu菜单显示不全,似被遮盖问题
package cn.itcast.jdbc.datasource;
/*
* 创建连接池
*/import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.LinkedList;public class MyDataSource { private static String url = "jdbc:mysql://localhost:3306/jdbc";
private static String user = "root";
private static String password = "root";
private LinkedList<Connection> connectionsPool = new LinkedList<Connection>();
//构造方法,创建连接池(初始化里面有10个连接)
public MyDataSource(){
try{
Class.forName("com.mysql.jdbc.Driver");
for(int i=0;i<10;i++){
this.connectionsPool.addLast(this.createConnection()); //创建10个连接,并把他们加到队列里面
}
}catch(SQLException e){
throw new ExceptionInInitializerError(e);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
}
}
//创建一个连接的语句,为了给创建连接池调用
private Connection createConnection() throws SQLException{
return DriverManager.getConnection(url,user,password);
}
//获取一个连接
public Connection getConnection(){
return this.connectionsPool.removeFirst(); //获取并移除此列表的第一个元素
}
//释放的时候把用过的连接加到尾部
public void free(Connection conn){
this.connectionsPool.addLast(conn);
}}
这句话加载一个类到jvm中,一般是数据库驱动类,这个数据库驱动类中一定有个静态方法去系统中注册自己的数据库。新的JDK如果把对应的数据库驱动都注册了,那肯定不需要了。
你看看你的项目中有properties文件指定了属性jdbc.drivers么?