发布于2020-12-29 07:19 阅读(1394) 评论(0) 点赞(13) 收藏(5)
今天无意中注释了Class.forName("dm.jdbc.driver.DmDriver"); 反射加载驱动程序的代码,结果程序还是能正常查询数据库数据进行返回,
有点颠覆了我之前写demo的时候会用到这个来测试,必须要写Class.forName("dm.jdbc.driver.DmDriver");才能正常的访问数据,
我的测试代码如下:(我用的是达梦数据库测试的)
package org.example;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
/**
* @Description TODO
* @Author Harry
* @Date 2020/12/25 14:28
**/
public class TestDmJdbc {
public static void main(String[] args) {
Connection con = null;// 创建一个数据库连接
PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用Statement
ResultSet result = null;// 创建一个结果集对象
try
{
// Class.forName("dm.jdbc.driver.DmDriver");// 加载驱动程序
System.out.println("开始尝试连接数据库!");
String url = "jdbc:dm://localhost:5236/GEN?useUnicode=true&characterEncoding=UTF-8";// 127.0.0.1是本机地址
String user = "GEN";// 用户名,系统默认的账户名
String password = "123456789";// 你安装时选设置的密码
con = DriverManager.getConnection(url, user, password);// 获取连接
System.out.println("连接成功!");
String sql = "select * from gen_test1";// 预编译语句,“?”代表参数
pre = con.prepareStatement(sql);// 实例化预编译语句
//pre.setString(1, "303");// 设置参数,前面的1表示参数的索引,而不是表中列名的索引
result = pre.executeQuery();// 执行查询,注意括号中不需要再加参数
while (result.next())
// 当结果集不为空时
System.out.println("学号:" + result.getInt("id") + "姓名:"
+ result.getString("testName"));
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
// 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源
// 注意关闭的顺序,最后使用的最先关闭
if (result != null)
result.close();
if (pre != null)
pre.close();
if (con != null)
con.close();
System.out.println("数据库连接已关闭!");
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
}
于是出于好奇心去查了一下源码,翻的过程中在DriverManager类上发现了一段这样的注释
同时看到如下加载源码
原来实现驱动的第三方厂商只要按java SPI支持,就会自动注册进驱动,所以我看到源码里实现的方式也是用list存放所有的驱动
这个是不同厂商的实现
以此解了我心中的疑惑!
本文由博客群发一文多发等运营工具平台 OpenWrite 发布
原文链接:https://www.cnblogs.com/harryzhang66/p/14202556.html
链接:http://www.javaheidong.com/blog/article/45555/e3c6e18a3d52e1c08f6c/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!