java 加载数据库驱动 与forname无关
来源:互联网 发布:建筑优化设计 编辑:程序博客网 时间:2024/05/17 10:38
1.平时加载jdbc的驱动,去连mysql,增删改查,代码如下
String url="jdbc:mysql://localhost/shopping?user=root&password="; //Object df = Class.forName("com.mysql.jdbc.Driver");Connection conn=DriverManager.getConnection(url); Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery("select * from mytable");while(rs.next()){ System.out.println(rs.getString(1)+"\t"+rs.getString(2)+"<br/>");}conn.close();//DriverManager.getDrivers().toString()if(DriverManager.getDrivers().hasMoreElements()){//Driver drg = (Driver) DriverManager.getDrivers().nextElement();DriverManager.deregisterDriver(DriverManager.getDrivers().nextElement());//System.out.println(drg.toString());}DriverManager.deregisterDriver(DriverManager.getDrivers().nextElement());//DriverManager.deregisterDriver("com.mysql.jdbc.Driver");}catch(Exception ex){System.out.println("111111"+ex.getMessage());//ex.printStackTrace();}发现注销掉forname那句话,也能正常获取数据库内容
解释一下,那句话意思是加载类,此处用了forname第三个参数,也就是实例化了这个driver,如果不加这句话,等于这个类没加载,那么下一句
DriverManager.getConnection()怎么去得到连接呢
2.因为jdbc 4.0规定,mysql驱动包mysql***.jar/里的META-INF/services/java.sql.Driver里面已经写了com.mysql.jdbc.Driver,同时当执行
DriverManager.getConnection这句话时,会去前者里读取信息,所以这句forname加载类是多余的。(<span style="color:#ff0000;">对纯java程序,</span><pre name="code" class="java"><span style="color:#ff0000;">这句forname加载类是多余的</span><span style="font-family: Arial, Helvetica, sans-serif;"><span style="color:#ff0000;">,对tomcat对web应用,必须有这句话。另外,tomcat的包里面自带mysql***.jar,所以不用再导入这个jar包。</span>)</span>
3.如图,改了这个文件中的driver名,去掉forname那句话,则不能正确获取mysql内容鸟。
/库mysql***.jar/META-INF/services/java.sql.Driver改成如下
com.mysql.jdbc.Driver11
com.mysql.fabric.jdbc.FabricMySQLDriver1
note:www.huangyunkun.com/2014/03/23/jdbc-with-class-forname
0 0
- java 加载数据库驱动 与forname无关
- 1. Class.forName("com.mysql.jdbc.Driver");//加载数据库驱动
- 为什么加载数据库驱动只用Class.forName()
- 数据库驱动的WEB应用程序性能(与服务器无关)
- java连接数据库时加载驱动程序Class.forName(driveName)详解
- Class.forName()、Class.forName().newInstance() 、New 三者区别! 终于明白为什么加载数据库驱动只用Class.forName()了!!困扰了我2个小时
- java程序与SQLServer2008数据库加载驱动并连接源代码
- java程序与SQLServer2008数据库加载驱动并连接源代码
- 由加载数据库驱动的方法Class.forName()看其作用!
- Java数据库驱动的加载
- Java连接数据库加载驱动
- jdbc加载驱动 Class.forName()的作用
- 数据库驱动为什么要使用Class.forName()
- java类加载器(java.lang.ClassLoader) 与 Class.forName()
- java类加载器(java.lang.ClassLoader) 与 Class.forName()
- Class.forName方法与动态加载
- java不同数据库加载驱动方法
- java.lang.ClassNotFoundException:数据库驱动加载失败
- Union的一个知识点
- 采用JSP+JavaBean的方式进行简单的实现用户的网页登陆实例
- C语言scanf()函数:格式化输入函数
- web前端,标签切换总结4removeClass() 去除元素的类
- spoj375 树链剖分
- java 加载数据库驱动 与forname无关
- Android Studio启动配置gradle遇到的问题
- Count and Say
- web前端,标签切换总结5load()加载新的html界面
- C++中的结构到底可不可以继承?
- github学习 之 如何在github上删除一个repository
- hdu 5427(水)
- 安卓控件使用系列10:RadioButton单选按钮的使用
- 程序设计基石与实践系列之从开源项目学习C语言基本的编码规则