A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

Aiano

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© Aiano 初级黑马   /  2016-12-28 12:56  /  1870 人查看  /  3 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

数据库大神给解答一下

//反射一下 赋值给谁了 后面也没用到呀
//只是加载到内存 没有实例化吗
Class.forName("com.mysql.jdbc.Driver");

Connection conn = ...;
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from news_inf");
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端

3 个回复

倒序浏览
创建Connection对象的时候,使用DriverManager类中的getConnection方法,该方法的底层返回的是return (getConnection(url, info, Reflection.getCallerClass()));其中用到了反射,你具体可以看看源码
回复 使用道具 举报
你是说:Class.forName("com.mysql.jdbc.Driver");这段代码吗?\r\n
在视频中老师已经讲过了,com.mysql.jdbc.Driver类中有一块静态代码块,其中执行了
[Java] 纯文本查看 复制代码
static {
try {
java.sql.DriverManager.registerDriver(new Driver());
} catch (SQLException E) {
throw new RuntimeException(“Can’t register driver!”);
}
}

所以在加载mysql驱动进内存的时候,会先执行该代码块并创建出一个Driver对象,然后调用registerDriver()方法将自己注册到DriverManager中
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马